我有两种类型的用户:“供应商”和“客户”。我目前正在使用Laravel's built-in Auth Controllers
(来自make:auth
命令)来进行我的客户端用户身份验证。
由于我有两种用户,所以我改变了$redirectTo
财产在LoginController
, RegisterController
, and ResetPasswordController
to /client/home
.
这是证明:
注册控制器
登录控制器
现在,它重定向到/client/home
每次我成功完成注册、登录和密码重置。
但问题是当我在mysite.com/client/home
已经,每当我想去mysite.com/register
or mysite.com/login
通过地址栏,它将重定向到mysite.com/home
代替mysite.com/client/home
...
我怎样才能让它重定向到mysite.com/client/home
每当经过身份验证的用户尝试访问时/login
or /register
?
最简单的选择是为两个登录区域创建单独的控制器。以后管理起来会更容易,并且您可以更好地自定义行为。
默认文件夹结构如下所示:
app
|__Http
|__Controllers
|__Auth
|__ForgotPasswordController.php
|__LoginController.php
|__RegisterController.php
|__ResetPasswordController.php
您可以为客户端控制器创建一个附加文件夹,如下所示:
app
|__Http
|__Controllers
|__Auth
| |__ForgotPasswordController.php
| |__LoginController.php
| |__RegisterController.php
| |__ResetPasswordController.php
|__Client
|__Auth
|__ForgotPasswordController.php
|__LoginController.php
|__RegisterController.php
|__ResetPasswordController.php
这样您就可以自定义$redirectTo
每个控制器单独的属性。
作为替代解决方案,您可以覆盖redirectPath
RedirectsUsers 特征,通过创建redirectPath
方法,并返回您想要的 URL:
public function redirectPath()
{
if (\Request::is('client/*'))
{
return url('client/home');
}
return url('home');
}
第二种解决方案的优点是您还可以返回控制器操作和命名路由。我个人不喜欢路由到 URL,就好像我决定更改它们一样,那么我就必须在所有地方更改它们。使用控制器操作似乎是一个更好的主意,但如果稍后重构代码,您可能会遇到同样的问题。我更喜欢使用命名路由,因为我可以给它们一个合理的名称,并且永远不会再次更改它们,但仍然保持所有重定向正常工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)