I wanted to do the same thing in Laravel 5.5. Handling authentication has moved to IlluminateAuthMiddlewareAuthenticate
which throws an IlluminateAuthAuthenticationException
.
That exception is handled in IlluminateFoundationExceptionsHander.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 AppExceptionsHandler.php
.
To do this, add the following to the top of the Handler
class in AppExceptionsHandler.php
:
use IlluminateAuthAuthenticationException;
And then add the following method, editing as necessary:
/**
* Convert an authentication exception into an unauthenticated response.
*
* @param IlluminateHttpRequest $request
* @param IlluminateAuthAuthenticationException $exception
* @return IlluminateHttpResponse
*/
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.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…