【问题标题】:Handling Permission PHP and MYSQL处理权限 PHP 和 MYSQL
【发布时间】:2015-04-21 21:57:18
【问题描述】:

需要处理用户权限的建议,我的应用程序有两个因素:

  1. 位置
  2. 模块

场景:

系统中的用户可能可以访问 location1 中的 3 个模块和 location2 中的 2 个模块

现在我应该如何处理我的表

方法一:

在自己的用户表中分配权限列并使用分隔符分隔权限示例:

权限(列):loc1m1,loc1m2,loc1m3,loc2m1,loc2m2

方法二:

有一个单独的权限表:

| id | userid | location | module | status |
|----|--------|----------|--------|--------|
| 1  | 1      | loc1     | 1      | 1      |
| 2  | 1      | loc1     | 2      | 1      |
| 3  | 1      | loc1     | 3      | 1      |
| 4  | 1      | loc2     | 1      | 1      |
| 5  | 1      | loc2     | 2      | 1      |

或者如果有更好的做法我想知道它

每个人都有不同的权限,因此不需要定义角色。

请分享您的见解。这是架构

http://www.laravelsd.com/share/7fOnku

谢谢

【问题讨论】:

    标签: php mysql authentication laravel-4 permissions


    【解决方案1】:

    绝对不要做方法一。

    方法 2 通常是公认的方法。通过这种方式,您可以查询谁有权访问特定区域,或者某个用户可以访问哪些区域。

    另一种选择是使用为您处理访问控制的包 - 我通常使用https://github.com/BeatSwitch/lock-laravel

    【讨论】:

      【解决方案2】:

      我不确定你是否看过 Access Control List,但 laravel 和 symfony 都有关于这个问题的非常好的文章和一些运行良好的令人惊叹的包,所以你可能有点在发明轮子。

      看看这些文章:

      https://medium.com/laravel-4/laravel-4-acl-a7f2fa1f9791

      http://ollieread.com/blog/2014/03/18/a-simplified-laravel-acl/

      包:

      https://packagist.org/packages/jacopo/laravel-authentication-acl

      https://github.com/intrip/laravel-authentication-acl

      【讨论】:

      • 我需要为每个人单独设置权限,而不是创建角色!并且大多数包都迫使我们创建角色
      【解决方案3】:

      我认为你应该创建 5 个表:

      主表

      1. 用户(ID、姓名、...)
      2. 位置(ID、姓名、...)
      3. 模块(ID、名称、...)

      数据透视表:

      1. users_locations(id, users_id, locations_id)
      2. locations_moduls(id, locations_id, moduls_id)

      在此之后,您可以使用表连接(多对多)。如果你使用 laravel,这可以帮助你:https://scotch.io/tutorials/a-guide-to-using-eloquent-orm-in-laravel

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-01
        • 1970-01-01
        • 2016-05-04
        • 1970-01-01
        • 2016-08-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多