У меня проблема с применением разных промежуточных программ к одному и тому же маршруту /
. Например,
В моем проекте я использовал url()->previous()
, потому что, если пользователь не вошел в систему на некоторых страницах, он / она должен войти в систему после нескольких поисков или посещения нескольких страниц. Поэтому, когда пользователь вошел в систему, этот пользователь должен быть перенаправлен обратно на предыдущий URL-адрес.
Фактически /
этот маршрут имеет несколько служб, доступных независимо от того, вошел ли пользователь в систему или нет. Но после входа в систему я хочу проверить, является ли пользователь администратором, тогда он должен быть ограничен, потому что это интерфейсное приложение. Но всякий раз, когда я вошел в систему, он перенаправляет меня на маршрут /
из-за url()->previous()
, и я не могу применить свое промежуточное ПО на этом маршруте, потому что это гостевой маршрут, а не авторизация. Итак, актуальный вопрос: как сделать этот маршрут необязательным для нескольких промежуточных программ? Или любое другое предложение будет оценено. Спасибо
Route
Route::get('/', 'HomeController@index')->name('home')->middleware('usertype');
Middleware
public function handle($request, Closure $next)
{
if (auth()->check() AND auth()->user()->type != 1) {
return $next($request);
}
auth()->logout();
return redirect(route('login'))->with('error','Admin can not login to frontend.');
}
AuthenticatesUsers. php
public function showLoginForm()
{
if(!session()->has('from')){
session()->put('from', url()->previous());
}
return view('auth.login');
}
protected function authenticated(Request $request, $user)
{
Session::put('name',$user->userDetail);
return redirect(session()->pull('from',$this->redirectTo));
}