Redirect user to login page when session expires in Laravel
You can override the unauthenticated()
method in your app/Exceptions/Handler.php
file to add the missing route parameter.
use Illuminate\Auth\AuthenticationException;
class Handler extends ExceptionHandler
{
protected function unauthenticated($request, AuthenticationException $exception)
{
return $request->expectsJson()
? response()->json(['message' => $exception->getMessage()], 401)
: redirect()->guest(route('login', ['account' => $request->route('account')]));
}
}
three3
Updated on June 29, 2022Comments
-
three3 almost 2 years
I am trying to redirect a user back to the login page if their session has expired. I am using Laravel 5.5. I have edited my
RedirectIfAuthenticated
file to include the following code in thehandle
function:if (!Auth::check()) { return redirect()->route('login', ['account' => 'demo']); }
When I do this, I am receiving the following error message:
Missing required parameters for [Route: login] [URI: /].
My
login
route is inside a subdomain route group which is why I am passing theaccount
parameter. Here is part of my code inweb.php
// Subdomain routing Route::domain('{account}.ems.dev')->group(function () { Route::get('/', 'LoginController@show')->name('login'); }
And here is my
LoginController@show
code:/* * Show the login form */ public function show($account) { // Validate this is a valid subdomain $organization = Organization::where('subdomain', $account)->first(); if ($organization) { return view('login'); } else { return 'This account does not exist.'; } }
Nothing I have tried works. I keep getting the exact same error message even though I am passing in the required parameters.
Update #1
Screenshot of error page:
Update #2
After a little digging around the Whoops! error page, I see this,
protected function unauthenticated
is what is causing the problem:How do I override this function to add the missing parameter?