从会话或数据库读取用户权限


read user permission from session or database

在我的数据库中,用户有角色,每个角色都有权限。权限有两个字段权限组(如用户、帖子、评论)和权限操作(按位添加01、删除02、编辑04、批准08)。

例如,添加并批准帖子:

permission[POST_PERMISSION_GROUP]= 01 | 08 ;

我想把它存储到用户的会话中。但一旦管理员更改了用户的权限,就应该更新该用户的会话。现在我陷入了进退两难的境地,是应该在会话中缓存这些权限,还是直接从数据库中读取权限?每次用户有权访问每个页面时,都必须检查几个权限。

如果你能分享你的经历,那就太好了。

使用权限可以完成两件事:

  • 检查某个用户是否具有权限
  • 设置某个用户是否具有权限

为此,您需要两个功能:

  • check_permission($user, $permission)
  • set_permission($user, $permission, $allowed)

这些函数的第一个实现应该操作权限的权威来源(即可能是数据库)。

如果你没有遇到性能问题,就这样吧。如果你已经确认,检查和设置潜航时间太长,那么优化,而不是更早。