如果尝试进入登录屏幕,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 - 具有多重身份验证的未经身份验证的重定向问题