#php #laravel #redirect #middleware
#php #Laravel #перенаправление #Промежуточное программное обеспечение
Вопрос:
Когда пользователь регистрируется на моем веб-сайте Laravel, он автоматически выводит их на панель мониторинга (чего я и хочу). Однако я создал промежуточное программное обеспечение для определенной страницы, которое перенаправляет гостевых пользователей на страницу регистрации. Когда регистрация завершена, я хочу, чтобы пользователь был перенаправлен обратно на конкретную страницу, которую он пытался посетить, прежде чем они были перенаправлены промежуточным программным обеспечением. Если пользователь не был перенаправлен этим конкретным промежуточным программным обеспечением, я все равно хочу, чтобы страница по умолчанию была панелью мониторинга после регистрации пользователя.
RegisterController:
protected $redirectTo = 'dashboard';
public function redirectTo(){
return redirect()->intended($this->redirectTo)->getTargetUrl();
}
Промежуточное программное обеспечение:
public function handle($request, Closure $next)
{
if (auth()->guest()) {
return redirect()->route('register');
}
return $next($request);
}
Ответ №1:
Вы можете попробовать установить «предполагаемый URL», используя guest
метод перенаправителя: «Создайте новый ответ перенаправления, поместив текущий URL в сеанс».:
return redirect()->guest(route('register'));
Ответ №2:
для меня это работает отлично
class RegisterController extends Controller {
protected function redirectTo()
{
if (session('url.intended')) {
return session('url.intended');
}
return '/';
}
...
}
Комментарии:
1. Был дан ответ, объясняющий персонализированный пример, основанный на определенном условии. Я не мог смириться с вопросом.