当我使用内置身份验证并尝试将用户注销时/auth/logout- 它无法正常工作.它似乎让用户保持登录状态.但是当我清除浏览器缓存时,我可以看到实际上已经将用户注销了.
我没有在页面上得到任何错误,也没有在日志文件中出错.
我猜测Session::flush()在注销方法可能会解决这个问题 - 但我不知道该把它放在哪里..有人能指出我正确的方向吗?
lor*_*rey 52
对于那些使用已接受的解决方案解决问题的人:我从Laravel 5.1开始并更新到5.2.以下修复对我有用:
尝试将"退出"路线更改为
Route::get('auth/logout', 'Auth\AuthController@logout');
Run Code Online (Sandbox Code Playgroud)
或者在AuthController构造函数中添加
public function __construct()
{
$this->middleware('guest', ['except' => ['logout', 'getLogout']]);
}
Run Code Online (Sandbox Code Playgroud)
取自:https://stackoverflow.com/a/34667356/1275778(如果您之后仍然遇到问题,还请检查其他答案)
Dee*_*ran 11
试试这个..
放入以下代码" 类AuthController extends Controller "
public function getLogout()
{
$this->auth->logout();
Session::flush();
return redirect('/');
}
Run Code Online (Sandbox Code Playgroud)
小智 7
我有同样的问题.问题实际上是路由和控制器配置中的一个简单的小错误.
您看到路由实际上指定了一个方法,getLogout并且控制器异常正在寻找logout.
您唯一需要做的就是更改控制器中的异常.无需任何其他方法.该getLogout方法已经存在且运行良好.
这是实际的代码
Route::get('auth/logout', 'Auth\AuthController@getLogout');
Run Code Online (Sandbox Code Playgroud)
public function __construct()
{
$this->middleware($this->guestMiddleware(), ['except' => 'logout']);
}
Run Code Online (Sandbox Code Playgroud)
该_construct方法应如下所示:
public function __construct()
{
$this->middleware($this->guestMiddleware(), ['except' => 'getLogout']);
}
Run Code Online (Sandbox Code Playgroud)