我正在laravel 5.2中尝试简单的注销功能,但是我真的不明白我错在哪里。有人可以提供帮助会很棒。
这是路线
Route::get('logout', 'loginController@getLogout');
loginController getLogout
方法:
public function getLogout()
{
//$this->auth->logout();
Session::flush();
Auth::logout();
return redirect('/');
}
在使用此功能的视图中链接:
<a href="{{url('logout')}}">Logout</a>
会话商店代码:
$request->session()->put('name', $username['name']);
AuthController 构造函数:
public function __construct()
{
$this->middleware('guest', ['except' => ['logout', 'getLogout']]);
}
当用户点击注销链接时,它会重定向到根页面但不会真正破坏会话或注销。它不需要登录查看页面(它应该)。
答案 0 :(得分:1)
我也有同样的问题,我已经通过方法1进行了纠正,我使用方法2进行了参考。
方法1:
Route::get('auth/logout', 'Auth\AuthController@logout');
或方法2: 或者在AuthController构造函数中添加
public function __construct()
{
$this->middleware('guest', ['except' => ['logout', 'getLogout']]);
}
希望这样可以清除你的错误。我有同样的问题,我确实喜欢这个
会话销毁必须像这样使用
Session::forget('name');
$request->session()->flush(); // in your Controller
答案 1 :(得分:0)
尝试使用以下方法更改routes.php中的路径:
Route::get('logout', 'Auth\AuthController@logout');
对于我使用的退出路线:
{{ url('/logout') }}
通常情况下这是有效的,如果您需要使用不同的控制器进行特殊操作,请尝试使用:
$request->session()->flush()
在控制器中。 遵循Laravel 5.2文档 - &gt; https://laravel.com/docs/5.2/session
其他近似值,尝试修改控制器中的顺序,也许它会起作用。根据文档,Auth:logout()将清除所有用户身份验证数据,然后您可以清理其他会话数据。
public function getLogout()
{
//$this->auth->logout();
Auth::logout();
Session::flush();
return redirect('/');
}