如何在退出时更改重定向网址?

时间:2015-04-22 12:21:51

标签: authentication redirect laravel-5

我正在使用默认提供的Laravel 5身份验证系统。 注销后,用户被重定向到根页面,但我想更改它。 我设法通过在“AuthController.php”中定义“$ redirectTo”来进行“登录”和“注册”过程。但是对于“注销”,我在同一个地方定义了“$ redirectAfterLogout”,但似乎没有考虑到。

有谁能解释我的问题在哪里以及如何解决? 非常感谢。

9 个答案:

答案 0 :(得分:32)

对于Laravel 5,

打开AuthController类:app / Http / Controllers / Auth / AuthController.php

将以下属性添加到班级

protected $redirectAfterLogout = 'auth/login';

您可以使用任何网址更改auth/login

答案 1 :(得分:2)

注销后的重定向在特征AuthenticatesAndRegistersUsers中进行了硬编码。您可以在AuthController中通过添加以下内容覆盖它:

public function getLogout()
{
    $this->auth->logout();

    return redirect('logout');
}

答案 2 :(得分:2)

如果您未提供$redirectAfterLogout属性,则会使用默认值'/'

此逻辑可在此课程中找到:\vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesUsers.php

public function logout()
{
    Auth::guard($this->getGuard())->logout();

    return redirect(property_exists($this, 'redirectAfterLogout') ? $this->redirectAfterLogout : '/');
}

话虽如此,只需在AuthController中添加此属性:

protected $redirectAfterLogout = '/afterRedirectURL';

答案 3 :(得分:1)

对于 Laravel 5.5 覆盖LoginController中的注销方法。在我的情况下,我在登录后重定向到家庭路线。

/**
 * Log the user out of the application.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function logout(Request $request)
{
    $this->guard()->logout();
    $request->session()->invalidate();

    return redirect()->route('home');
}

答案 4 :(得分:0)

在控制器中使用内置的laravel Auth,我只是重写了logoutOut方法,该方法在注销后重定向以触发

使用的“ LoginController.php”中

use AuthenticatesUsers;

AuthenticatesUsers特性中的

是一种注销方法,您可以选择覆盖此方法,否则您会看到它会触发一个LoggedOut方法

您可以覆盖默认为空的注销方法,并进行重定向

    /**
     * The user has logged out of the application.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return mixed
     */
    protected function loggedOut()
    {
        return redirect()->route('login.show');
    }

答案 5 :(得分:-1)

在App \ Controllers \ Auth \ AuthController中,添加以下两个变量。

RAILS_ENV=test

你明白了。

答案 6 :(得分:-1)

我在Laravel 5.0中遇到同样的问题。覆盖方法可以解决问题。

1)转到app / Http / Controllers / Auth / AuthController.php 2)添加新方法:

// Override Logout method (define custom url)
public function getLogout()
{
    $this->auth->logout();
    return redirect('auth/login');  // Your Custom URL
}

答案 7 :(得分:-1)

将此添加到您的路线

Route :: get('logout',function(){     AUTH ::注销();     return redirect('/'); / 添加了这一行。 auth似乎不能单独工作 / });

答案 8 :(得分:-2)

如果你想要自定义重定向url注销,那么它只能是laravel versi 5.4, 打开/your-project-laravel/vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php 并根据您的需要编辑重定向

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

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

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

        return redirect('/login');
    }