当会话在Laravel中过期时,将用户重定向到登录页面

thr*_*ee3 3 php redirect laravel laravel-5

如果用户的会话已过期,我正在尝试将其重定向回登录页面。我正在使用Laravel 5.5。我已编辑RedirectIfAuthenticated文件以在handle函数中包含以下代码:

if (!Auth::check()) {
    return redirect()->route('login', ['account' => 'demo']);
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我收到以下错误消息:

[路由:登录] [URI:/]缺少必需的参数。

我的login路由在子域路由组内,这就是为什么我传递account参数的原因。这是我的代码的一部分web.php

// Subdomain routing
Route::domain('{account}.ems.dev')->group(function () {
    Route::get('/', 'LoginController@show')->name('login');
}
Run Code Online (Sandbox Code Playgroud)

这是我的LoginController@show代码:

/*
 * 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.';
    }
}
Run Code Online (Sandbox Code Playgroud)

我没有尝试过任何工作。即使我传递了必需的参数,我仍然收到完全相同的错误消息。

更新#1

错误页面的屏幕截图:

在此处输入图片说明

更新#2

经过一番摸索之后!错误页面,我看到了,protected function unauthenticated这是导致问题的原因:

在此处输入图片说明

如何覆盖此函数以添加缺少的参数?

Cam*_*ilo 5

您可以覆盖文件中的unauthenticated()方法app/Exceptions/Handler.php以添加缺少的route参数。

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')]));
    }
}
Run Code Online (Sandbox Code Playgroud)