2015-08-03 3 views
0

Я только начинаю после создания нового приложения laravel, используя artisan. Следуя инструкциям в официальных документах о Authentication, я добавил формы для входа и регистрации.Post authentication redirectPath не работает, если пользователь уже зарегистрировался

Так как я хочу, чтобы пользователь перенаправляется на /dashboard маршрут после аутентификации, я добавил следующее к моему AuthController:

protected $this->redirectPath = '/dashboard'; 
protected $this->redirectTo = '/dashboard'; 

вещи кажутся для работы, как и ожидалось. После успешного входа в систему пользователь загружается в /dashboard.

Проблема возникает, когда пользователь уже выполнил вход (используя маршрут /auth/login) и снова перешел на маршрут /auth/login через адресную строку браузера. В таких случаях laravel перенаправляет пользователя обратно на /home, маршрут, который, конечно же, не определен в моем приложении. Таким образом, я получаю следующее сообщение об ошибке отображается в браузере:

NotFoundHttpException in RouteCollection.php line 143: 

in RouteCollection.php line 143 
at RouteCollection->match(object(Request)) in Router.php line 746 
at Router->findRoute(object(Request)) in Router.php line 655 
at Router->dispatchToRoute(object(Request)) in Router.php line 631 
at Router->dispatch(object(Request)) in Kernel.php line 237 
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) 

я ожидал бы пользователю быть приняты непосредственно к dashboard. Любая помощь приветствуется.

ответ

0

По умолчанию он обрабатывается с помощью встроенного RedirectIfAuthenticated промежуточного слоя, интересная часть

if ($this->auth->check()) { 
    return new RedirectResponse(url('/home')); 
} 
+0

Ох. Да, я заметил. Я не понимал, что это часть кода приложения. Я думал, что это происходит из кода поставщика (что, конечно, я не хочу менять). Я думал, что чего-то не хватает. Итак, это так же просто, как поставить «RedirectResponse» (url ('/ dashboard') 'там? –

+0

да, просто его изменение будет делать вы можете редактировать что-либо из каталога поставщика, некоторые вещи требуют большей осторожности, но ничего не сломается с обновлением пакетов, если вы это сделаете (если, конечно, не будет какая-то несовместимая версия) – zakius

0

RedirectsUsers класс является чертой, так что вы облако переопределить метод redirectPath в вашем AuthController, сделать это просто скопировать и вставьте его в свой AuthController, внеся необходимые изменения, что-то вроде этого.

/** 
* Get the post register/login redirect path. 
* 
* @return string 
*/ 
public function redirectPath() 
{ 
    return route('home'); 
} 
0

решаемые

объяснение: поскольку в Laravel перенаправлять по умолчанию путь /, поэтому я использовал это и создал маршрут, применяя его к промежуточному и добавил условие/логика такая, что :

«если пользователь зарегистрирован, а затем перенаправляет его на действие контроллера».

Route::get('/', ['middleware' => 'auth', function(){ 

    if(Auth::check()) 
    { 
     return redirect()->action('[email protected]'); 
     //return redirect('/') 
    } 
    }]); 

Надеюсь, что это решит вашу проблему.