How to change default redirect URL of Laravel 5 Auth filter?
laravel-5, php
Solution
I wanted to do the same thing in Laravel 5.5. Handling authentication has moved to `Illuminate\Auth\Middleware\Authenticate` which throws an `Illuminate\Auth\AuthenticationException`.
That exception is handled in `Illuminate\Foundation\Exceptions\Hander.php`, but you don't want to change the original vendor files, so you can overwrite it with your own project files by adding it to `App\Exceptions\Handler.php`.
To do this, add the following to the top of the `Handler` class in `App\Exceptions\Handler.php`:
use Illuminate\Auth\AuthenticationException;
And then add the following method, editing as necessary:
/**
* Convert an authentication exception into an unauthenticated response.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Auth\AuthenticationException $exception
* @return \Illuminate\Http\Response
*/
protected function unauthenticated($request, AuthenticationException $exception)
{
if ($request->expectsJson()) {
return response()->json(['error' => 'Unauthenticated.'], 401);
}
return redirect()->guest('login'); //<----- Change this
}
Just change `return redirect()->guest('login');` to `return redirect()->guest(route('auth.login'));` or anything else.
I wanted to write this down because it took me more than 5 minutes to figure it out. Please drop me a line if you happened to find this in the docs because I couldn't.
Problem
By default if I am not logged and I try visit this in browser: ``` http://localhost:8000/home ``` It redirect me to `http://localhost:8000/auth/login` How can I change to redirect me to `http://localhost:8000/login`