设计高级权限系统

时间:2016-01-01 02:00:42

标签: mysql permissions

我目前想要实现一个权限系统,这样可以方便地添加权限(通过使用行而不是MySQL中的字段)。每个权限将有5位:查看,添加,删除,修改,值。我举一些例子来更好地解释这个结构。问题是,通过这个系统,我希望能够授予管理员授予GIVE权限的权限,并授予普通用户执行各种任务的权限。

示例1:

论坛

方法1)

会有一个名为can_create_topic和can_modify_topic_name以及can_delete_own_topic ETC ETC的权限

方法2)

会有一个名为topic的权限,它会有子权限或位:添加,修改,查看,删除。我更喜欢这种方法,只是不知道如何实现这一点。

示例2:

我还想授予用户权限,这些权限也不是是或否是权限,例如max_number_of_topics_per_hour,这是一个输入值。

示例3:

我想授予其他管理员(比如我是超级管理员)关于授予权限的权限。例如,一个管理员可以修改UserA的can_create_topic,但不能修改UserB等等。我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

很抱歉在这里写了不属于代码的解决方案。

我正在为我的项目使用此解决方案

你需要创建6个表

  • userroles(id,name,status)
  • 用户(ID,姓名,电子邮件,密码,user_role_id,状态)
  • permissionentities(id,entity_name,status)
  • permissionrules(id,entity_name_id,rule_name,status)
  • userrolespermissions(id,user_role_id,permission_rule_id,rule_value)
  • userpermissions(id,user_id,permission_rule_id)

通过这种方式,

  • 您可以添加表名等实体。
  • 您可以添加有关实体的规则,您可以添加创建,更新,删除,读取,PerHourRecords等等。
  • 您可以设置规则值,例如实体论坛的每小时记录为100.否则rule_value将为空
  • 您可以根据用户角色设置权限,例如所有管理员都拥有这些权利,所有编辑都拥有这些权利
  • 此外,您可以为特定用户设置权限,通常所有编辑者都有权为博客实体每小时提交10篇帖子,但User1可以提交12。

当然,您需要为这些设置创建界面