如何在Laravel中使用GET请求注销

31moq8wy  于 2022-12-14  发布在  其他
关注(0)|答案(6)|浏览(148)

我在注销时遇到错误,它向我显示此错误...“此路由不支持GET方法。支持的方法:请帮我解决这个问题。
下面是我的代码...

@if(Auth::check())
  <li><i class="fa fa-user"></i> {{Auth::user()->name}}:
    <a href="{{url('logout')}}">logout</a>
  </li>
@else
  <li>
    <a href="{{route('login')}}"><i class="fa fa-user"></i>Login</a>
  </li>
@endif
yyhrrdl8

yyhrrdl81#

您可以在web.php routes文件中添加以下行:

Route::get('/logout', 'Auth\LoginController@logout');

这允许您使用GET请求注销。

shstlldc

shstlldc2#

用途

<a href="{{ route('logout') }}">Logout</a>

和路由文件中

Route::get('logout', function ()
{
    auth()->logout();
    Session()->flush();

    return Redirect::to('/');
})->name('logout');
yqkkidmi

yqkkidmi3#

GET方法不支持注销。Laravel 5.4+使用POST方法注销,因此您应该POST一个表单来注销,而不是简单的GET请求。
例如:

<form id="logout-form" action="{{ url('logout') }}" method="POST">
            {{ csrf_field() }}
    <button type="submit">Logout</button>
</form>

更改代码:

@if(Auth::check())
<li><i class="fa fa-user"></i> {{Auth::user()->name}}:</li>
        <form id="logout-form" action="{{ url('logout') }}" method="POST">
                    {{ csrf_field() }}
            <button type="submit">Logout</button>
        </form>
      @else
    <li><a href="{{route('login')}}"><i class="fa fa-user"></i>
            Login
        </a>
    </li>
@endif
50pmv0ei

50pmv0ei4#

您使用链接的href属性来调用相应的URL -然而这些链接总是使用GET HTTP调用来打开/调用相应的目标。正如错误消息所述,您所调用的目标正在等待POST HTTP调用。
了解了问题所在后,您可能会找到以下StackOverflow答案,它将帮助您以适合您的方式解决问题:Making href anchor tag request post instead of get

hs1ihplo

hs1ihplo5#

@if(Auth::check())
  <li><i class="fa fa-user"></i> {{Auth::user()->name}}:
    <a href="{{ route('logout') }}" onclick="event.preventDefault();document.getElementById('frm-logout').submit();">Logout</a>    
    <form id="frm-logout" action="{{ route('logout') }}" method="POST" style="display: none;">
        {{ csrf_field() }}
    </form>
  </li>
@else
  <li>
    <a href="{{route('login')}}"><i class="fa fa-user"></i>Login</a>
  </li>
@endif
2q5ifsrm

2q5ifsrm6#

使用get方法从Laravel 8注销

转到web.php并为路由添加get方法:

use App\Http\Controllers\Auth\LoginController;
Route::get('logout', [LoginController::class,'logout']);

相关问题