我注销时遇到错误,它向我显示此错误...“此路由不支持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
答案 0 :(得分:1)
您只需在web.php
路由文件中添加以下行:
Route::get('/logout', 'Auth\LoginController@logout');
这使您可以使用GET请求注销。
答案 1 :(得分:0)
您正在使用链接的href属性来调用相应的URL-但是,这些链接始终使用GET HTTP调用来打开/调用相应的目标。如错误消息所述,您正在呼叫的目标正在等待POST HTTP呼叫。
了解您的问题所在后,您可能会找到此StackOverflow答案,该答案应该可以帮助您以适合自己的方式解决该问题: Making href anchor tag request post instead of get
答案 2 :(得分:0)
GET方法不支持注销。 Laravel 5.4+使用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
答案 3 :(得分:0)
使用
<a href="{{ route('logout') }}">Logout</a>
和在路由文件中
Route::get('logout', function ()
{
auth()->logout();
Session()->flush();
return Redirect::to('/');
})->name('logout');
答案 4 :(得分:0)
@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