【发布时间】:2019-12-19 20:33:01
【问题描述】:
由于I had problem with Passport multi auth,我想知道是否有必要拥有一个管理员警卫(和一个管理员表),或者最好在角色和权限的帮助下为管理员和用户使用默认警卫(和用户表)?哪个更好?
【问题讨论】:
标签: laravel authentication laravel-5 laravel-passport guard
由于I had problem with Passport multi auth,我想知道是否有必要拥有一个管理员警卫(和一个管理员表),或者最好在角色和权限的帮助下为管理员和用户使用默认警卫(和用户表)?哪个更好?
【问题讨论】:
标签: laravel authentication laravel-5 laravel-passport guard
如果没有更多信息,这是一个很难回答的问题,但我会尝试从几个角度来看待它:
您的应用程序中的用户可以变成管理员(反之亦然)
在这种情况下,我可能会有一个包含 is_admin 列的表,并使用该列来验证用户是否可以执行管理任务(例如,通过使用 Laravel 的 gates)。这样做的缺点是,如果您想创建第三种类型的用户(例如主管),则需要更改使用的模型。
您有一个用户与管理员完全分开的应用程序
如果您控制管理员而其他人只是用户,则可以使用创建单独的保护,如果您想为管理员和用户实现不同的身份验证流程(例如,使用 SAML)。如果要添加第三种类型的用户(例如主管),则可以创建另一个警卫。
您的应用程序可以为每个用户拥有不同的(可自定义的)权限
在这种情况下,我建议实现 roles 表、permissions 表、role_permissions 表并将名为 role_id 的列添加到 user 表。这提供了最大的灵活性,也可用于 Laravel 的 gate 系统,但可能是最难设置和最难维护的。
对于我开发的应用程序,我们混合使用了角色和守卫。我们为用户使用角色,因为每个用户都可以获得一组可自定义的权限。然后,我们为 API 用户使用单独的保护,这些保护继承了对其进行身份验证的用户的权限。
【讨论】: