Laravel 5 Auth Logout不会破坏会话

seo*_*ppc 14 php laravel

我正在使用Laravel5 Auth系统进行我的新项目,我能够使用注册和登录功能,但没有按预期工作,但是注册不能正常工作,但是我被重定向到指定的url,$redirectAfterLogout但它不会破坏会话,所以即使在点击之后注销按钮我能看到仪表板.

laravel在Auth系统中有一些错误,请建议,谢谢

Ami*_*ita 17

您尚未提供任何已使用的代码.但是,以下代码有效:

public function getLogout(){
    Auth::logout();
    Session::flush();
    return Redirect::to('/');
}
Run Code Online (Sandbox Code Playgroud)

Session::flush();清除所有现有会话.


ken*_*lls 5

使用Laravel 5.2,我注册了一个监听器,处理了logout事件,并按照上面的建议调用了Session :: flush.似乎工作得很好.希望这是有帮助的.

EventServiceProvider.php

protected $listen = [
    'App\Events\SomeEvent' => [
        'App\Listeners\EventListener',
    ],
    'Illuminate\Auth\Events\Logout' => [
        'App\Listeners\ClearSessionAfterUserLogout'
    ],
]; 
Run Code Online (Sandbox Code Playgroud)

ClearSessionAfterUserLogout.php

public function handle(Logout $event)
{
    Session::flush();
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*ala 0

在您的情况下,您可能不会到达 logout() 方法。如果您使用 Laravel 5 构建身份验证机制,那么您将运行 AuthenticatesAndRegistersUsers Trait getLogout() 方法,该方法执行以下操作:$this->auth->logout();

找到此代码,编辑如下方法进行调试。如果您看到字符串“Logging out”,那么您必须已注销。否则,您的路由有问题,并且注销永远不会执行。

/**
 * Log the user out of the application.
 *
 * @return \Illuminate\Http\Response
 */
public function getLogout()
{
    dd("Logging out");
    $this->auth->logout();

    return redirect('/');
}
Run Code Online (Sandbox Code Playgroud)