mysql - 设计高级权限系统

标签 mysql permissions

<分区>

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

示例 1:

论坛

方法 1)

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

方法 2)

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

示例 2:

我还想授予用户除 yes 或 no 权限之外的权限,例如 max_number_of_topics_per_hour,这是一个输入值。

示例 3:

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

最佳答案

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

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

你需要创建6张表

  • 用户角色(id、姓名、状态)
  • 用户(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)
  • 用户权限(id、user_id、permission_rule_id)

这样,

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

当然,你需要为这些设置制作界面

关于mysql - 设计高级权限系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34553026/

相关文章:

mysql 连接 2 个表以产生以下输出

ubuntu - Octave 未在 Ubuntu 16.04 上运行。给出以下错误/消息

linux - 如何防止交互式ssh登录?

mysql - Tweepy 信息写入 MySQL - 文本被截断

Mysql 查询 Left Join with Not in

mysql - 我们如何将 "data from more than one records"从一张表插入到另一张表?

linux - 将 linux 共享 cifs 挂载为定义的用户而不是 "root"

macos - 如何在多用户 MacOS Sierra 设置上使用 Homebrew

permissions - 检查用户是否有查看页面的权限

php - 在 MySQL PHP 中添加附加 where 子句