我刚刚使用artisan
生成一个新的laravel应用程序后开始。按照关于Authentication的官方文档中提供的说明,我添加了登录和注册表单。
由于我希望用户在身份验证后被重定向到/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 :(得分:0)
默认情况下,它由内置的RedirectIfAuthenticated中间件处理,有趣的部分是
if ($this->auth->check()) {
return new RedirectResponse(url('/home'));
}
答案 1 :(得分:0)
RedirectsUsers
类是一个特征,因此您可以覆盖redirectPath
中的AuthController
方法,只需复制方法并将其粘贴到AuthController
制作中你需要的修改,比如这样。
/**
* Get the post register / login redirect path.
*
* @return string
*/
public function redirectPath()
{
return route('home');
}
答案 2 :(得分:0)
解决了
解释:因为在Laravel默认重定向路径是/,所以我利用它并通过将中间件应用它来创建路由并添加了条件/逻辑,使得:
“如果用户已登录,则将其重定向到控制器操作。”
Route::get('/', ['middleware' => 'auth', function (){
if(Auth::check())
{
return redirect()->action('BrandController@index');
//return redirect('/')
}
}]);
希望这可以解决您的问题。