Перенаправление Laravel на предполагаемый URL после регистрации

#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. Был дан ответ, объясняющий персонализированный пример, основанный на определенном условии. Я не мог смириться с вопросом.