Laravel注销不起作用
Posted
技术标签:
【中文标题】Laravel注销不起作用【英文标题】:Laravel logout not working 【发布时间】:2017-01-07 18:37:19 【问题描述】:我正在 laravel 5.2 中尝试简单的注销功能,但我真的不明白我错在哪里。如果有人可以提供帮助,那就太好了。
这里是路线
Route::get('logout', 'loginController@getLogout');
loginController getLogout
方法:
public function getLogout()
//$this->auth->logout();
Session::flush();
Auth::logout();
return redirect('/');
link 在使用此功能的视图中:
<a href="url('logout')">Logout</a>
会话存储代码:
$request->session()->put('name', $username['name']);
AuthController 构造函数:
public function __construct()
$this->middleware('guest', ['except' => ['logout', 'getLogout']]);
当用户点击注销链接时,它会重定向到根页面,但不会真正破坏会话或注销。它不需要登录即可查看页面(它应该)。
【问题讨论】:
尝试掷骰子("停在这里!");在 getLogout 函数的请求下,看看你是否正在通过它。我不是 100% 但也许你需要把 '/' 放在 url('/logout') 中。 是的,死确实有效。并且没有死,它确实重定向到'/'(根页面)有问题吗? 根据文档,flush() 删除会话中的所有数据。我在我的 laravel 应用程序中使用这条路线。 Route::get('logout', 'Auth\AuthController@logout');通常它可以工作:) 【参考方案1】:我也有同样的问题,我用方法1纠正了,我用方法2参考了。
方法一:
Route::get('auth/logout', 'Auth\AuthController@logout');
或方法二: 或在 AuthController 构造函数中添加
public function __construct()
$this->middleware('guest', ['except' => ['logout', 'getLogout']]);
希望这会清除您的错误。我有同样的问题,我一个人喜欢这个
Session Destroy 必须这样使用
Session::forget('name');
$request->session()->flush(); // in your Controller
【讨论】:
你好,方法2已经到位,仍然面临问题 还是没有运气!我做了: Session::forget('name'); $request->session()->flush();验证::注销();返回重定向('/'); 用这个试试Route::get('logout', [ 'uses' => 'Auth\AuthController@getLogout', 'as' => 'logout' ]);
。【参考方案2】:
尝试在 routes.php 中更改路由:
Route::get('logout', 'Auth\AuthController@logout');
对于我使用的注销路线:
url('/logout')
通常这是有效的,如果你需要使用不同的控制器来做一些特别的事情,请尝试使用:
$request->session()->flush()
在控制器中。 遵循 Laravel 5.2 文档 -> https://laravel.com/docs/5.2/session.
其他近似,尝试修改控制器中的顺序,也许它会起作用。根据文档, Auth:logout() 将清除所有用户身份验证数据,然后您可以清除其他会话数据。
public function getLogout()
//$this->auth->logout();
Auth::logout();
Session::flush();
return redirect('/');
【讨论】:
嗯。有什么东西搞砸了。 :D 你有没有评论过旧路线并将新路线放在后面?您还有其他退出方式吗? 是的,我确实评论了旧路线并添加了新路线。并且没有其他退出方式 控制器函数中的操作顺序如何更改,请查看更新后的答案。以上是关于Laravel注销不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.2:Auth::logout() 不起作用