如果用户的会话已过期,我正尝试将用户重定向回登录页面。我正在使用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.';
}
}
我没有尝试过任何作品。即使我传递了所需的参数,我仍然会收到完全相同的错误消息。
错误页面的屏幕截图:
在 Whoops!错误页面上进行了一些挖掘后,我看到了这一点,protected function unauthenticated
是造成问题的原因:
如何覆盖此功能以添加缺少的参数?
答案 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