我正在构建一个 Laravel 4 应用程序,它需要对 3 种实体类型进行登录身份验证:教练、学生和管理员,所有这些都具有单独的用户界面。虽然我可以使用像 Sentry 2 这样的包和带有用户类型的单个 DB 用户表来实现这一点,但关于潜在的多态 DB 设计模式和可能出现的头痛问题,我并不满意。过去处理过以前的应用程序的多态问题,以及当您想要规范化您的数据库结构等时可能造成的痛苦。为每种实体类型设置单独的数据库表似乎是一种更好的方法。
你将如何解决这个设计问题?
Laravel 4 auth 基本上使用以下文件:
- Auth.php(门面)
- AuthManager.php
- AuthServiceProvider.php
- 守卫.php
- auth.php(配置)
- User.php(雄辩模型)
我一直在尝试复制这些文件,以便为有效的 Coach 实体提供一个独立的身份验证,在 app.php 文件中注册外观和服务提供者,以及对配置进行必要的更改以使用 Coach雄辩的身份验证模型:
- AuthCoach.php(门面)
- AuthCoachManager.php
- AuthCoachServiceProvider.php
- 守卫.php
- authcoach.php(配置)
- Coach.php(雄辩模型)
我仍在使用来自标准 Laravel 4 身份验证的 Guard.php,但如果需要通过创建 GuardCoach.php 文件来自定义教练身份验证的 Guard 方法,可以轻松扩展 Guard。
如果我要对每种实体类型进行单独的身份验证,您认为这是实现它的好方法吗?
你能看到任何潜在的问题或知道更好的方法吗?