laravel 6 при входе в систему перейти на предыдущий URL-адрес не работает
Я использую Laravel framework
моя предыдущая версия laravel - 5.8, и в моем входе в промежуточное ПО
public function handle($request, Closure $next)
{
if(Auth::check())
{
return $next($request);
}
else
{
Session::put('url.intended',URL::previous());
return redirect('/login');
}
}
и это контроллер входа в систему
if(Session::get('url.intended') <> '')
return Redirect::to(Session::get('url.intended'));
else
return redirect('/');
с этими кодами в laravel5.8 все работало отлично, но когда я обновляюсь до laravel 6, он больше не работает, я не знаю, почему здесь помощь, спасибо, если я пришел по какой-либо ссылке, он всегда перенаправляет меня на / ссылку
1 ответ
Вероятно, вы должны позволить фреймворку обрабатывать как можно больше этого. Если вам необходимо использовать собственное промежуточное ПО и метод контроллера, пусть фреймворк справится с этим наилучшим образом.
Работа с предполагаемым URL-адресом - это уже то, что фреймворк может делать сам, и проверяет несколько условий, чтобы выяснить это. Вы можете использоватьguest
метод перенаправителя, чтобы он сделал это за вас:
return redirect()->guest('login');
Это позаботится о перенаправлении на 'login' и установит url.intended
в сеансе по мере необходимости.
После успешного входа в систему вы можете перенаправить их туда, где они пытались закончить, "предполагаемые" или резервный URL:
return redirect()->intended('/');
Это будет перенаправлять на то, что может найти как "предполагаемое", и, если не использовать запасной вариант. Он также удалит'url.intended'
ключ из сеанса, поскольку он больше не используется. Не нужно устанавливать или проверять сеанс самостоятельно.