我计划开发一个有三种用户类型(管理员,企业,个人)的系统 . 我希望将每个用户类型信息存储在一个单独的表中,以便于访问并减少空白字段的数量(如果它们都在一个表中) .
看过可用于Laravel的多个Multi-auth软件包之后,他们似乎都坚持使用以下URL的方法:
-
/ admin / login
-
/ business / login
-
/ personal / login
理想情况下,我想采用一种方法,可以使用标准的Laravel Auth / login,这意味着所有用户都可以从同一页面登录 .
我对Laravel的了解有限,所以所有人都对此表示赞赏 .
1 回答
通常的方法是让一个
users
表具有ID / email / username(作为主键),登录凭证和 all 用户类型将登录到系统 . 但是,信息可以存储在每种类型的单独表中,引用外键 .在对用户进行身份验证之后,您可以根据用户类型决定如何处理用户 .
如果您将登录凭据存储在多个表中,那就是数据冗余 . 除非您希望相同的电子邮件/用户名具有多个用户类型,否则在登录期间,用户必须决定要登录的用户类型(可能通过选择下拉选项) .
Update: 关于用户角色
如果您只需在登录后重定向用户,请使用
$redirectTo
. 或者,如果您需要根据日志记录后的角色决定如何处理用户,您可以在AuthController
/LoginController
中使用authenticated()
方法(如果它不存在则添加此方法,它将覆盖AuthenticatesUsers
特征) .在整个应用程序中,我建议将middleware分配给route groups以根据用户角色限制路由 . 是的,在您的视图和控制器中,您可以在需要时使用类似
if(Auth::user()->hasRole('business'))
的内容,但首先您需要在User模型中创建hasRole()
方法 . 如果您觉得它变得复杂,您可以尝试像laravel-permission和Entrust这样的软件包 . 我没试过他们:)