当我使用内置身份验证并尝试从/auth/logout
注销用户时-它不能按预期工作。它似乎可以让用户保持登录状态。但是当我清除我的浏览器缓存时,我可以看到它实际上已经注销了用户。
我没有在页面上得到任何错误,也没有在日志文件中得到任何错误。
我猜logout方法中的Session::flush()
可能会解决这个问题--但我不知道该把它放在哪里。谁能给我指个方向?
发布于 2016-03-05 21:33:59
对于任何有问题的人来说,使用公认的解决方案解决它:我从Laravel 5.1开始,并更新到5.2。下面的修复方法对我有效:
尝试将您的“注销”路由更改为
Route::get('auth/logout', 'Auth\AuthController@logout');
或在AuthController构造函数add中
public function __construct()
{
$this->middleware('guest', ['except' => ['logout', 'getLogout']]);
}
摘自:https://stackoverflow.com/a/34667356/1275778 (如果之后你仍然有问题,也可以查看其他答案)
发布于 2016-04-09 04:28:43
我也有同样的问题。问题实际上是路由和控制器的配置中的一个简单的小错误。
您可以看到,路由实际上指定了一个getLogout
方法,而控制器异常是查找logout
。
您唯一需要做的就是更改控制器中的异常。不需要任何额外的方法。getLogout
方法已经存在,并且可以完美地工作。
以下是实际的代码
app/Http/routes.php
Route::get('auth/logout', 'Auth\AuthController@getLogout');
app/Http/Controller/Auth/AuthController.php
public function __construct()
{
$this->middleware($this->guestMiddleware(), ['except' => 'logout']);
}
_construct
方法应该如下所示:
public function __construct()
{
$this->middleware($this->guestMiddleware(), ['except' => 'getLogout']);
}
发布于 2016-06-06 01:23:52
这是因为每条路由都会调用中间件。您可以在App\Http\Middleware\RedirectIfAuthenticated.php的“注销路由”中添加例外
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (!$request->is('/logout') && Auth::guard($guard)->check()) {
return redirect('/home');
}
return $next($request);
}
}
https://stackoverflow.com/questions/28747530
复制相似问题