我正在构建一个Laravel 4应用程序,它需要3种实体类型的登录身份验证:教练、学生和管理,所有这些都有单独的用户界面。虽然我可以使用Sentry 2这样的包和带有用户类型的单个DB用户表来实现这一目标,但是对于可能出现的多态DB设计模式和问题,请不要对我坐视不管。在过去处理过以前的应用程序中的多态问题,以及当您想要规范您的DB结构时它可能造成的痛苦,等等,为每种实体类型设置单独的DB表似乎是一个更好的方法。
你将如何解决这个设计问题?
Laravel 4 auth基本上使用以下文件:
我已经尝试过复制这些文件,以便为工作的coach实体提供一个独立的auth,在app.php文件中注册外观和服务提供者,并对配置进行必要的更改,以使用Coach雄辩模型进行身份验证:
我仍然在使用来自标准Laravel4auth的Guard.php,但是,如果需要通过创建一个GuardCoach.php文件来定制用于教练身份验证的守护方法,那么可以很容易地扩展GuardCoach.php。
如果我要为每种实体类型分别使用auth,您认为这是实现这一目标的好方法吗?
你能看到任何潜在的问题或者知道更好的方法吗?
发布于 2013-09-07 11:01:04
也许我不太理解您的上下文,但是为什么不直接使用基于角色的访问控制的基本概念,为不同的角色提供不同的内容呢?如果不够紧,可以使用基于属性的auth策略来授予权限。你想复制(三重)逻辑的原因是什么?没有提到冗余db数据的事实(单独的用户表用于单独的用户类型?)啊!)?
如果你对Sentry不满意(我个人不使用这个库),我可以推荐Zizaco/Confide + Zizaco/Entrust作为一个干净优雅的用户/角色/权限管理解决方案。看看这里,Zizaco GitHub。
一个快速的总体想法:
你的多态关注点是什么?
如果您担心您的用户表会变得杂乱无章,请将其保留为存储auth详细信息的地方,并将所有其他必需的(非auth)用户详细信息放在另一个表中。
希望这能帮助你,只要我能很好地理解你的问题。
https://stackoverflow.com/questions/18672276
复制相似问题