使用用户和管理员的默认防护来创建Admin Guard VS

时间:2019-08-13 09:44:57

标签: laravel authentication laravel-5 laravel-passport guard

I had problem with Passport multi auth起,我想知道是否有必要设置一个管理员保护(和admins表),或者最好在角色和角色的帮助下为管理员和用户使用默认保护(和用户表)权限?哪个更好?

1 个答案:

答案 0 :(得分:0)

在没有更多信息的情况下,这是一个很难回答的问题,但是我将尝试从几个角度进行研究:

您有一个应用程序,该应用程序的用户可以变成管理员(反之亦然)

在这种情况下,我可能会有一个包含is_admin列的表,并使用该列来验证用户是否可以执行管理任务(例如,通过使用Laravel的gates)。缺点是,如果您要创建第三种类型的用户(例如,主管),则需要更改使用的模型。

您有一个应用程序,其中用户与管理员完全独立

如果您控制管理员,而其他所有人都只是用户,则可以使用创建单独的防护措施,如果您想同时为管理员和用户实施不同的身份验证流程,那么这确实为将来提供了很大的灵活性。 ,使用SAML)。如果要添加第三种类型的用户(例如,主管),则可以创建另一个保护。

您拥有一个可以为每个用户拥有不同(可自定义)权限的应用程序

在这种情况下,我建议实现一个roles表,一个permissions表,一个role_permissions表并将一个名为role_id的列添加到user表。这提供了最大的灵活性,并且可以与Laravel的gate系统一起使用,但是可能是最难设置和最难维护的系统。

对于我开发的应用程序,我们混合使用角色和防护。我们为用户使用角色,因为每个用户都会获得一组可自定义的权限。然后,我们为API用户使用单独的保护措施,该保护措施继承了通过身份验证的用户的权限。