【问题标题】:User Roles in Laravel 5.5Laravel 5.5 中的用户角色
【发布时间】:2017-10-07 14:47:26
【问题描述】:

在 Laravel 5.5 中添加用户角色最有效的方法是什么?

我遇到了几种方法,即

  • 管理中间件
  • user_roles 的数据透视表

我已经在我的应用程序中尝试并实现了这两种方法,但提出这个问题时要牢记我的应用程序的可伸缩性,它们将如何发挥作用。

【问题讨论】:

标签: php laravel laravel-5 laravel-5.5


【解决方案1】:

如果你愿意,你可以在角色表上添加权限,创建一个新的权限表来定义用户的权限。

例如:

Without permission table: Based on cartalyst sentinel
User Table -> name, email, password etc
Role Table -> name, slug, permissions
Users_role -> user_id, role_id

With permission table: Based in Zizaco entrust
User Table -> name, email, password etc
Role Table -> name, slug, permissions
Users_role -> user_id, role_id
Permission table -> name, slug, description
role_permission -> permission_id, role_id

【讨论】:

    【解决方案2】:

    您为什么要尝试重新发明轮子?也许你可以为此使用一个包。 spatie/laravel-permission 包是我特别喜欢的。

    经过快速搜索,我还在 laracasts 上找到了这个 discussion,还有其他一些选项。

    【讨论】:

    • 我不是想在这里重新发明轮子,只是询问两者的更好方法。 ! :)
    • 啊,好吧。取决于你想要完成什么。管理中间件只是给你一个开/关开关。如果这足够了,你应该使用它。如果您想拥有更大的灵活性,您通常希望切换到具有角色的东西。
    【解决方案3】:

    我想说您需要同时拥有:用于检查每个请求的访问权限的中间件和用于存储您的权限的权限表(和数据透视表)。

    对于一个工作示例,您可以:

    免责声明:我是这些软件包的贡献者。

    在上面的例子中,简单来说,权限是和一个角色绑定的,这个角色可以分配给一个所有者,并且所有者有用户。

    【讨论】:

      【解决方案4】:

      在我看来,您需要问题中提到的两件事。您应该有一个 Roles 表,它定义了用户在您的应用程序中可以拥有的所有可能的角色。 用于将用户关联到特定角色的 user_roles 数据透视表 还有一个中间件,您将在授权用户访问该功能之前使用它来检查角色。

      此链接中提供了 Laravel 5.5 https://www.5balloons.info/user-role-based-authentication-and-access-control-in-laravel/中基于角色的身份验证的滞留演示

      【讨论】:

        猜你喜欢
        • 2018-08-14
        • 1970-01-01
        • 2018-05-07
        • 2018-04-12
        • 1970-01-01
        • 2020-08-10
        • 1970-01-01
        • 1970-01-01
        • 2021-12-06
        相关资源
        最近更新 更多