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

时间:2017-11-13 21:54:53

标签: php laravel redirect laravel-5

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

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

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

  

缺少[Route:login] [URI:/].

的必需参数

我的login路由位于子域路由组内,这就是我传递account参数的原因。以下是web.php

中代码的一部分
// Subdomain routing
Route::domain('{account}.ems.dev')->group(function () {
    Route::get('/', 'LoginController@show')->name('login');
}

这是我的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.';
    }
}

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

更新#1

错误页面的屏幕截图:

enter image description here

更新#2

Whoops!错误页面上进行了一些挖掘后,我看到了这一点,protected function unauthenticated是造成问题的原因:

enter image description here

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

1 个答案:

答案 0 :(得分:3)

您可以覆盖validate :no_reservation_overlap scope :overlapping, ->(period_start, period_end) do where "((date_start <= ?) and (date_end >= ?))", period_end, period_start end private def no_reservation_overlap if (Reservation.overlapping(date_start, date_end).any?) errors.add(:date_end, 'it overlaps another reservation') end end 文件中的unauthenticated()方法,以添加缺少的路由参数。

app/Exceptions/Handler.php