【问题标题】:Laravel - How to create multiple user roles and assign privilege to them?Laravel - 如何创建多个用户角色并为他们分配权限?
【发布时间】:2018-04-29 13:52:59
【问题描述】:

我必须创建一个应用程序,其中有 5 种类型的帐户

  • 超级管理员
  • 库存管理员
  • 店主
  • 店长
  • 用户

那么如何使用 Laravel 创建这些多个帐户,我应该为每个帐户使用不同的中间件组。另外,我必须为所有人创建权限。

目前,我将它与每个中间件和会话一起使用,并在 DB 中为每个单独的表使用它,但我认为这不是一个好方法。

用 Laravel 创建这些多个帐户的方法是什么。

@谢谢

【问题讨论】:

  • 如何创建一个组表并将用户分配到不同的组?

标签: php mysql laravel-5 laravel-5.3


【解决方案1】:

除了提供身份验证服务外,Laravel 还提供了一种简单的方法来授权用户对给定资源的操作。 Laravel 的授权方法很简单,授权操作有两种主要方式:gates 和政策。请参阅 Laravel 文档了解更多详细信息。

Authorization in Laravel 5.5

【讨论】:

    【解决方案2】:

    正如@Fawzan 所说,如果您只使用角色(或组),那么只需创建一个组表,然后将每个用户链接到适当的组。然后,您将拥有一个 user 表,其中每个用户都有一个 groupID

    然后您可以创建一个刀片指令来帮​​助您在应用程序中检查用户是否具有特定角色。 (将其放在您的 AppServiceProvider 中)

    Blade::directive('hasRole', function ($role) {
        return auth()->user()->role->name = $role;
    });
    
    // Or a little more performant if you call the directive many times.
    
    $roles = Role::all()->pluck('id', 'name')->toArray();
    Blade::directive('hasRole', function ($role) use ($roles) {
        return auth()->user()->roleID == $roles[$role];
    });    
    

    【讨论】:

      【解决方案3】:

      您可以在 users 表中添加一个名为 user_type 的列,然后 例如,为每个用户插入十进制值

      Super admin = 1; 
      Inventory admin = 2; 
      Shop owner  = 3; 
      Shop manager = 4; 
      User = 5;
      

      并且基于 user_type 你可以做你所有的操作。

      【讨论】:

        猜你喜欢
        • 2020-07-17
        • 2019-04-04
        • 2021-08-26
        • 1970-01-01
        • 2016-11-28
        • 1970-01-01
        • 2021-08-06
        • 2021-07-14
        • 1970-01-01
        相关资源
        最近更新 更多