I'm working with Laravel 5 authentification system provided by default.
After logging out, a user is redirected to the root page but I'd like to change that.
I managed to do it for the "login" and "registering" process by defining "$redirectTo" in "AuthController.php". But for "logout", I defined "$redirectAfterLogout" at the same place but it seems to not be taken into account.
Could anyone explain me where is the problem and how to fix it please?
Thanks a lot.
For Laravel 5,
Open AuthController
class : app/Http/Controllers/Auth/AuthController.php
Add below property to the class
protected $redirectAfterLogout = 'auth/login';
you can change auth/login
with any url.
The redirect after logout is hard coded in the trait AuthenticatesAndRegistersUsers
. You can override it in your AuthController
by adding this:
public function getLogout()
{
$this->auth->logout();
return redirect('logout');
}
If you don't provide the $redirectAfterLogout
attribute, it will use the default which is '/'
.
This logic can be found in this class: \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 : '/');
}
Having said that, just add this attribute in your AuthController:
protected $redirectAfterLogout = '/afterRedirectURL';
For Laravel 5.5 override logout method inside LoginController. In my case I am redirecting to home route after login.
/**
* 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');
}
In App\Controllers\Auth\AuthController, add the following two variables.
protected $redirectTo = '/private_dashboard';
protected $redirectAfterLogout = '/public_homepage';
You get the idea.
I have a same problem in Laravel 5.0. Override a method does the trick.
1) Go to app/Http/Controllers/Auth/AuthController.php
2) Add a new method :
// Override Logout method (define custom url)
public function getLogout()
{
$this->auth->logout();
return redirect('auth/login'); // Your Custom URL
}
Add this to your route
Route::get('logout', function(){
Auth::logout();
return redirect('/'); /Added this line. The auth doesn't seem to work on its own/
});
it'only laravel versi 5.4 if you want custom redirect url logout,
open /your-project-laravel/vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php
and edit redirect based on you needed
public function logout(Request $request)
{
$this->guard()->logout();
$request->session()->flush();
$request->session()->regenerate();
return redirect('/login');
}