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

问题描述 投票:0回答:6

注销时出现错误,它向我显示此错误...“此路由不支持 GET 方法。支持的方法:POST。” 请帮我解决这个问题..

这是我的代码...

@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
php laravel eloquent laravel-6 laravel-5.8
6个回答
14
投票

您可以在您的

web.php
路线文件中添加这一行:

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

这允许您使用

GET
请求注销。


11
投票

使用

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

并在路线文件中

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

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

3
投票

注销不支持 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

2
投票

您使用链接的 href 属性来调用相应的 URL - 但这些链接始终使用 GET HTTP 调用来打开/调用相应的目标。正如错误消息所述,您正在调用的目标正在等待 POST HTTP 调用。

知道您的问题是什么,您可能会找到这个 StackOverflow 答案,它应该可以帮助您以适合您的方式解决问题: 使 href 锚标记请求 post 而不是 get


2
投票
@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

0
投票

从 Laravel 8 使用 get 方法注销

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

use App\Http\Controllers\Auth\LoginController;
Route::get('logout', [LoginController::class,'logout']);
© www.soinside.com 2019 - 2024. All rights reserved.