首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Laravel 5身份验证注销不起作用

Laravel 5身份验证注销不起作用
EN

Stack Overflow用户
提问于 2015-02-27 00:23:19
回答 12查看 55.7K关注 0票数 22

当我使用内置身份验证并尝试从/auth/logout注销用户时-它不能按预期工作。它似乎可以让用户保持登录状态。但是当我清除我的浏览器缓存时,我可以看到它实际上已经注销了用户。

我没有在页面上得到任何错误,也没有在日志文件中得到任何错误。

我猜logout方法中的Session::flush()可能会解决这个问题--但我不知道该把它放在哪里。谁能给我指个方向?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 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 (如果之后你仍然有问题,也可以查看其他答案)

票数 60
EN

Stack Overflow用户

发布于 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']);
}
票数 8
EN

Stack Overflow用户

发布于 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);
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28747530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档