2016-12-30 7 views
0

Я изменил защищенный $ redirectTo = '/ tasks'; как в LoginController, так и в RegisterController. Кроме того, я изменил путь переадресации в промежуточном RedirectIfAuthenticated следующим образом:Как изменить путь перенаправления после входа в систему и выхода из системы в Laravel 5.3?

public function handle($request, Closure $next, $guard = null) 
{ 
    if (Auth::guard($guard)->check()) { 
     return redirect('/tasks'); 
    } 

    return $next($request); 
} 

Несмотря на то, что я сделал эти изменения, ничего не работает, а страницы будут перенаправлены на путь/входа в системе.

ответ

0

Это потому, что $redirectTo вступит в силу после вашего входа. Прежде всего, вам нужно войти в систему. Вот почему он отправляет вам путь /login. Поэтому, если вы хотите изменить, где он перенаправляется после Login или Registration, вы меняете те $redirectTo объектов. Если вы не хотите, чтобы пользователь вообще входил в систему, вы должны удалить промежуточное ПО auth для этого маршрута.

EDIT: Итак, что вы пропустили, так это то, что laravel перенаправляет вас на страницу, и если ее нет, она перенаправляется на $ redirectTo. Поэтому, если вы попытаетесь перейти на главную страницу и вам нужен аутентифицированный пользователь, после входа в систему он перенаправляется на главную страницу, а не/задачи, потому что именно там вы пытались пойти. Если вы хотите всегда перенаправляться на этот путь, а не на намеченный путь, вы можете сделать что-то, как показано ниже.

protected function sendLoginResponse(Request $request) 
{ 
    $request->session()->regenerate(); 

    $this->clearLoginAttempts($request); 

    return redirect()->to($this->redirectTo); 
} 

Добавьте этот код в ваш LoginController и вы всегда будете перенаправлены на $redirectTo.

+0

Я просто хочу быть перенаправлен на путь/tasks. Как это можно сделать? – bruce

+0

Что это значит? Вы имеете в виду, что всегда перенаправляетесь на этот путь? –

+0

Если пользователь успешно зарегистрирован, мне необходимо перенаправить на этот путь, например. /задания. – bruce

0

После просмотра кода, я понял, что ваш оператор IF не возвращает true. Вы должны сначала увидеть, что это такое. Кроме того, перенаправляйте в нужное место без каких-либо условий для проверки кода.

Кроме того, я использую этот код для перенаправления после входа в систему в своем приложении.

public function handle($request, Closure $next) 
{ 
    if ($this->auth->check()) { 
     return redirect('/home'); 
    } 

    return $next($request); 
} 
+0

В официальной документации Laravel говорится, что вам нужно изменить свойство $ redirectTo. Но это не работает. Даже если я изменю промежуточное ПО, он не работает. Я не знаю, почему вам нужно поставить код Фарзин Фарзанехния. – bruce