我正在使用默认提供的Laravel 5身份验证系统。 注销后,用户被重定向到根页面,但我想更改它。 我设法通过在“AuthController.php”中定义“$ redirectTo”来进行“登录”和“注册”过程。但是对于“注销”,我在同一个地方定义了“$ redirectAfterLogout”,但似乎没有考虑到。
有谁能解释我的问题在哪里以及如何解决? 非常感谢。
答案 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)
/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');
}