【问题标题】:Creating admin guard VS using the default guard for both users and admins为用户和管理员创建管理员防护 VS 使用默认防护
【发布时间】:2019-12-19 20:33:01
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    如果没有更多信息,这是一个很难回答的问题,但我会尝试从几个角度来看待它:

    您的应用程序中的用户可以变成管理员(反之亦然)

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

    您有一个用户与管理员完全分开的应用程序

    如果您控制管理员而其他人只是用户,则可以使用创建单独的保护,如果您想为管理员和用户实现不同的身份验证流程(例如,使用 SAML)。如果要添加第三种类型的用户(例如主管),则可以创建另一个警卫。

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

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

    对于我开发的应用程序,我们混合使用了角色和守卫。我们为用户使用角色,因为每个用户都可以获得一组可自定义的权限。然后,我们为 API 用户使用单独的保护,这些保护继承了对其进行身份验证的用户的权限。

    【讨论】:

    • 谢谢,使用github.com/spatie/laravel-permission 可以轻松设置和维护第三个选项吗?
    • @Ali 那个库看起来可以工作,但也不太难推出自己的库(不是双关语)。您可以像我在帖子中提到的那样设置表,然后创建两个相互关联的新模型(角色和权限)并提供与用户模型的关系。然后,您只需要创建一种自定义权限并添加权限检查的方法,您就可以开始了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    相关资源
    最近更新 更多