基于声誉实现权限

Ry-*_*Ry- 44 php mysql sql permissions

我正在创建一个网站,其中包含每个用户或用户组的项目,用户和权限.这是一个社区协作工具,我有4个不同的权限:

  • 创建者 - 进行更改,接受更改,更改权限
  • 接受更改
  • 做出改变
  • 视图

我如何在数据库中为用户组实现这种权限系统?

编辑:组/权限由信誉定义,如StackOverflow.

编辑2 - 更详细:每个文件都需要具有权限,项目需要新创建文件的默认权限,我还需要设置MySQL数据库权限.

dqh*_*cks 59

user_table
id, etc

permission table
id, user_id, permission_type
Run Code Online (Sandbox Code Playgroud)

这种结构中,每个用户可以有自己的帐户,每个组的特点,他们相关的一些权限类型可以有机会获得.您永远不需要更改表结构以添加新类型的权限.

为了更进一步,您可以使每种类型的权限成为二进制数.这样,您可以通过使用按位运算符使一组权限由一个整数表示.

例如,如果你有常数

PERMISSION_CHANGE_PERMISSIONS = bindec('001') = 1
PERMISSION_MAKE_CHANGES = bindec('010') = 2
PERMISSION_ACCEPT_CHANGES = bindec('100') = 4
Run Code Online (Sandbox Code Playgroud)

你可以使用按位运算符"|"将这些值组合成一个整数

(PERMISSION_CHANGE_PERMISSIONS | PERMISSION_MAKE_CHANGES) = bindec('011') = 3 = $users_combined_permissions
Run Code Online (Sandbox Code Playgroud)

然后检查他们是否具有特定权限,使用按位运算符"&"

($users_combined_permissions & PERMISSION_MAKE_CHANGES) = true
Run Code Online (Sandbox Code Playgroud)

如果您这样做,则每个权限集只需要一个db记录.

  • @Flipper我猜.然而,考虑未来从未受到伤害.使您的代码变得敏捷可以节省大量时间和日后的头痛. (13认同)
  • 我终于结束了.谢谢大家. (6认同)