如何设置 laravel 5.3 注销重定向路径?拉拉维尔 > 5.7

2022-08-30 09:13:36

在Laravel 5.3中注销后,没有优雅的解决方案可以重定向到特定页面吗?

被调用的函数来自 trait AuthenticatesUsers

public function logout(Request $request)
{
    $this->guard()->logout();

    $request->session()->flush();

    $request->session()->regenerate();

    return redirect('/');
}

这是来自 laravel 核心的默认函数。所以我必须覆盖整个功能,我不能编辑核心。但是,难道没有更简单的解决方案吗,因为手动注销,刷新并再次重新生成感觉有点过分。

在一篇文章中找出答案:https://codeneverlied.com/how-to-set-logout-redirect-path-in-laravel-5-8-and-before/


答案 1

我就是这样做的。在Auth\LoginController中,您有:

use AuthenticatesUsers;

将其更改为:

use AuthenticatesUsers {
    logout as performLogout;
}

然后,在登录控制器中定义一个新方法:logout()

public function logout(Request $request)
{
    $this->performLogout($request);
    return redirect()->route('your_route');
}

当然,该特征中的常规方法只有3行(用于将用户从系统中注销),因此您可以将它们复制到您的方法中,但是您应该始终遵循DRY原则(不要重复自己)并尽可能多地重用代码。logout()


答案 2

拉拉维尔 > 5.7

接受的答案很好,但是您可以通过简单地覆盖该方法完全绕过任何注销逻辑:loggedOut

// App\Http\Controllers\Auth\LoginController.php
protected function loggedOut(Request $request) {
    return redirect('/where/ever/you/want/to/go');
}

推荐