来自同一登录的Laravel Multi-auth(多个用户表)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了来自同一登录的Laravel Multi-auth(多个用户表)相关的知识,希望对你有一定的参考价值。

我计划开发一个有三种用户类型(管理员,企业,个人)的系统。我希望将每个用户类型信息存储在一个单独的表中,以便于访问并减少空白字段的数量(如果它们都在一个表中)。

看过可用于Laravel的多个Multi-auth软件包之后,他们似乎都坚持使用以下URL的方法:

  • /管理/登入
  • /业务/登录
  • /个人/登录

理想情况下,我想采用一种方法,可以使用标准的Laravel Auth / login,这意味着所有用户都可以从同一页面登录。

我对Laravel的了解有限,所以所有人都对此表示赞赏。

答案

通常的方法是有一个users表,其中包含ID / email / username(作为主键),登录凭据和将登录到系统的所有用户的用户类型。但是,信息可以存储在每种类型的单独表中,引用外键。 在对用户进行身份验证之后,您可以根据用户类型决定如何处理用户。

如果您将登录凭据存储在多个表中,那就是数据冗余。除非您希望相同的电子邮件/用户名具有多个用户类型,否则在登录期间,用户必须决定要登录的用户类型(可能通过选择下拉选项)。


更新:关于用户角色

如果您只需在登录后重定向用户,请使用$redirectTo。或者,如果您需要根据日志记录后的角色决定如何处理用户,您可以在authenticated() / AuthenticatesUsers中使用AuthController方法(如果它不存在,则添加此方法,它将覆盖LoginController特征)。

在整个应用程序中,我建议将middleware分配给route groups以根据用户角色限制路由。是的,在您的视图和控制器中,您可以在需要时使用if(Auth::user()->hasRole('business'))之类的东西,但首先您需要在User模型中创建hasRole()方法。如果您觉得它变得复杂,您可以尝试像laravel-permissionEntrust这样的软件包。我没试过他们:)

以上是关于来自同一登录的Laravel Multi-auth(多个用户表)的主要内容,如果未能解决你的问题,请参考以下文章

视图中的 Laravel Multi-Auth @auth 语法

Laravel 5.2 需要一个实现默认身份验证驱动程序/“Multi-Auth”的示例。现在需要很多工作,因为[重复]

来自同一浏览器的 laravel 和多会话

同时认证带来的Laravel 5.8会话混乱

Laravel:如何打开多个域(不是子域)以显示来自同一服务器的页面(无重定向)?

Laravel 5.2 在同一页面上登录和注册表单