|
1
34
符合你需要的模式被称为 role-based access control . PHP中有几个很好的实现,包括 Zend_Acl (良好的文件记录) phpGACL 和 TinyACL . 大多数框架还以某种形式拥有自己的ACL实现。 即使您选择滚动自己的解决方案,它也将帮助您审查那些因素充分的解决方案。 |
|
|
2
31
我认为位运算符是实现用户权限的最佳方法。 这里我将展示如何使用MySQL实现它。 下面是包含一些示例数据的示例表: 表1 :用于存储权限名称的权限表,位类似于1、2、4、8。ETC(2的倍数)
在表中插入一些示例数据。
表2
:用于存储用户ID、名称和角色的用户表。角色将计算为权限总和。
如果用户“ketan”拥有“用户添加”(bit=1)和“博客删除”(bit-64)的权限,那么角色将为65(1+64)。
样本数据
用户的交存权限 登录后,如果要加载用户权限,可以在下面查询以获取权限:
这里,user.role“&permission.bit是位运算符,它将输出为-
如果我们想检查特定用户是否具有用户编辑权限-
输出=无行。 您还可以看到: http://sforsuresh.in/implemention-of-user-permission-with-php-mysql-bitwise-operators/ |
|
|
3
6
您可能不需要权限组。而是创建用户组,授予用户组权限,并将用户分组。用户还应该能够覆盖他们所在组的权限。如果一个用户在多个具有权限的组中,则拒绝应始终覆盖授予。 综上所述:
|
|
|
4
6
我有一个稍微不同的结构,但它应该可以作为参考。 每个用户都有一个与之关联的“role”、“groupid”和groupid所指的组表。 然后我有三张许可表。
PermissionMaster包含权限所引用的名称/窗体/模块。PermissionChild将列出每个主控形状的所有可能权限,例如“创建”、“查看”、“编辑”、“删除”和“描述”(在第一个版本中没有此权限,即使是对于一个模块,权限设置太多也会使它变得混乱)。我允许添加更多的子级来具体地引用“changetimestamp”之类的函数,它还允许更具体的权限,而不是“edit”。 PermissionGroupChild是PermissionChild和Group表之间的链接。每个组都将复制一组PermissionChild,并使用默认设置进行设置。然后我有了一个权限类,它为每个用户执行表查询和检查。我只在登录时加载它。然后,在每个表单/模块中,我检查它是否具有适当的权限,并正确地应用UI。 至于角色,我只在登录配置页面使用它。角色值越小,排名越高。所以用户只能看到自己和角色值高于自己的角色。他/她可以编辑那些级别比自己低但不相似的。 |
|
|
5
2
我有组和用户(如Active Directory LDAP解决方案)。因此,如果我授予组访问权,我需要该组中的用户具有继承访问权。 因此,基于下面的@suresh kamrushi答案,我做了如下:
如果用户有位
如果用户有位
它还与父组一起工作。 你觉得这个解决方案怎么样? 有人有更好的方法吗? |
|
|
developer · 带外键的SQL表设计 1 年前 |
|
|
relatively_random · 确保两个表之间一致的共同参考 1 年前 |
|
|
b126 · 在两种不同的Oracle模式上执行相同查询的速度差异很大 2 年前 |
|
|
robertspierre · 在多对多关系中自动删除未引用的行 2 年前 |
|
|
Michael Samuel · MYSQL在以下情况下自动创建索引 8 年前 |