微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – Laravel 4多用户身份验证

我正在构建一个Laravel 4应用程序,需要3种实体类型的登录验证:Coach,Student&管理员,都有独立的用户界面.虽然我可以使用像Sentry 2这样的软件包和一个带有用户类型的单个数据库用户表来实现这一点,但是关于可能出现在轨道上的潜在多态数据库设计模式和令人头疼的事情,并不适合我.处理过去与以前的应用程序的多态问题,以及当你想要规范化你的数据库结构时可以创建的悲痛等等,为每个实体类型分别设置数据库表似乎是一种更好的方法.

你会如何解决这个设计问题?

Laravel 4 auth基本上使用以下文件

> Auth.PHP(门面)
> AuthManager.PHP
> AuthServiceProvider.PHP
> Guard.PHP
> auth.PHP(config)
> User.PHP(雄辩的模型)

我已经玩过复制这些文件,主要是为工作的教练实体提供一个独立的auth,在app.PHP文件注册Facade和服务提供者,以及对config进行必要的更改以使用Coach用于身份验证的雄辩模型:

> AuthCoach.PHP(门面)
> AuthCoachManager.PHP
> AuthCoachServiceProvider.PHP
> Guard.PHP
> authcoach.PHP(config)
> Coach.PHP(雄辩的模型)

我仍在使用标准Laravel 4 auth中的Guard.PHP,但是如果需要通过创建GuardCoach.PHP文件来定制Guard方法的Guard方法,可以轻松扩展Guard.

如果我要为每个实体类型分别使用auth,你认为这是实现它的好方法吗?

你能看到任何潜在的问题或知道更好的方法吗?

也许我不太了解您的上下文,但为什么不使用基于角色的访问控制的基本概念并为不同的角色呈现不同的东西?如果这不够紧,您可以使用基于属性的身份验证策略来细化权限.您想要复制(三倍)auth-logic的原因是什么?没有提到冗余数据库数据的事实(单独的用户表用于单独的用户类型?yuk!)?

如果您对Sentry不满意(个人而言,我不使用该库)我可以推荐Zizaco / Confide Zizaco / entrust作为用户/角色/权限管理的干净而优雅的解决方案.在这里查看Zizaco GitHub.

一个快速的总体思路:

>对整个应用程序使用单一的干净身份验证机制
>使用角色或角色权限进行粒度访问
>将您的管理逻辑分成单独的控制器(AdminUserController,AdminCoachController,等等……)
>我认为组成合适的刀片模板结构没有任何困难,以便完成所有工作并且组织良好

你的多态问题是什么?

如果您担心您的用户表会变得混乱,请将其留作存储身份验证详细信息的位置,并将所有其他必要(非身份验证)用户详细信息放在另一个表中.

希望这可以帮助你,只要我理解你的问题.

原文地址:https://www.jb51.cc/laravel/134713.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。