如果尝试进入登录屏幕,Laravel 5 会重定向到主页

Posted

技术标签:

【中文标题】如果尝试进入登录屏幕,Laravel 5 会重定向到主页【英文标题】:Laravel 5 redirect to home page if attempting to go to login screen 【发布时间】:2015-12-02 04:25:22 【问题描述】:

我有一个登录屏幕,它是基本 url (www.mysite.com/)。

当用户登录时,他们会被重定向到他们的主页 (/home)。

但是如果他们转到根目录,仍然可以返回登录页面。

如何使已登录的用户在登录后被送回其主页(如果未登录,他们当然会看到登录页面)?

【问题讨论】:

【参考方案1】:

当用户成功通过身份验证后,他们将被重定向到 /home URI,你需要注册一个路由来处理。你 可以通过定义一个自定义身份验证后重定向位置 AuthController 上的 redirectPath 属性:

在您的 AuthController 中更改 redirectPath 属性

protected $redirectPath = '/dashboard';

http://laravel.com/docs/5.1/authentication#Authenticating

【讨论】:

不幸的是,这不起作用:(试过:protected $loginPath = '/'; protected $redirectPath = '/home'; 无法理解什么不起作用..你能解释一下发生了什么吗?你在 laravl 5.1 上吗?【参考方案2】:

我在路由器中做了这个,虽然我不确定这是否是最好的解决方案:

Route::get('/', function () 
    if(Auth::check()) 
        return redirect('/dashboard');
     else 
        return view('auth.login');
    
);

【讨论】:

【参考方案3】:

您应该为此使用中间件。

Laravel 5 已经有一个开箱即用的“来宾”中间件,所以只需执行以下操作就足够了:

Route::get('/', ['middleware' =>'guest', function()
  return view('auth.login');
]);

然后在中间件文件App\Http\Middleware\RedirectIfAuthenticated中可以指定用户重定向到哪里。

默认为/home

【讨论】:

如果他们没有登录,那不会重定向吗?如果他们已经登录,我希望重定向他们并尝试转到登录页面。 不,如果他们登录了,它应该重定向他们:)。该类本身被命名为 RedirectIfAuthenticated,它只是别名为 guest。【参考方案4】:

就我而言,我必须删除浏览器中的 cookie 才能修复 /login 重定向。

【讨论】:

【参考方案5】:

在我的例子中,我编辑了 HomeController 的构造,如下所示:

  public function __construct()
  
    $this->middleware('auth')->except('index');
  

【讨论】:

以上是关于如果尝试进入登录屏幕,Laravel 5 会重定向到主页的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.0 - 登录失败时更改重定向

Laravel - 具有多重身份验证的未经身份验证的重定向问题

Flutter App每次登录后都会重定向到登录页面

进入我在 firebase 托管上托管的应用会重定向到谷歌登录页面

Laravel 5路由的多个中间件不起作用

如何将用户重定向到以前的URL在Laravel中注册后