Вам следует использовать redirect()->intended()
для своих целей.
Когда неаутентифицированный пользователь пытается посетить страницу, защищенную промежуточным программным обеспечением Auth, он перенаправляется на вашу страницу входа и только после этого становится егозаданный URL-адрес (URL-адрес, который он пытался посетить) хранится в сеансе.
Когда этот пользователь входит в систему, вы можете перенаправить его на его предполагаемую страницу или резервную страницу по вашему выбору, используя redirect()->intended()
.Например:
class LoginController
{
public function handleLogin()
{
if (Auth::attempt(request()->only(['email', 'password']))) {
return redirect()->intended('/your/fallback/url');
// Or if you want to get a URL by its route name:
// return redirect()->intended(route('route.name'));
}
// Handle what happens if the user's credentials were incorrect
}
}
Насколько мне известно, каждый URL, который посещает пользователь (через AJAX или иным способом), не должен храниться в сеансе, а только когда промежуточное ПО Authпинает в том, что заданный URL-адрес установлен.
В вашем коде вы используете url()->previous()
, который перенаправляет пользователя на его реферер (страница, которая инициировала запрос, т.е. предыдущая страница), а не предполагаемый URL-адрес, сохраненный в сеансе.