php如何实现用户权限设置,php – 如何构建cms的用户权限

本文探讨了权限管理的两种常见方法:直接用户映射和用户类映射,并详细阐述了如何使用位图或数据库表来存储和管理权限。通过位图可以直接赋予用户权限,而通过用户类则可以更灵活地管理权限,但也可能导致复杂性增加。同时,文章提到了如何在C语言中实现权限检查,并讨论了在设计此类系统时面临的挑战和权衡。
摘要由CSDN通过智能技术生成

这个问题有两种常见的方法,都涉及将允许的操作分解为您可以命名的离散操作. (删除帖子,创建画廊,升级代码,转储数据库,发射导弹,打开车库门.)在bitvector中给每个这样的位图(如果你想要少于32个权限,这是一个很好的和紧凑的存储机制;如果你认为它将超过32个权限,一个典型整数的大小,那么可能是数据库中的一个表..)

因此,您可以直接将用户映射到权限(“我想将gallery_create授予sarnold”),或者您可以通过用户类映射用户和权限(“我想将gallery_create授予art_curator类的所有成员;然后我希望从docent到art_curator推广用户sarnold“).

如果您直接将用户映射到权限,您可能会在部署年后发现一些奇怪的权限.如果您将用户映射到类,您可能会发现自己使用了人为的用户类,因为您信任某个具有特权的特定人员,而不是其他特权.

找出解决这种映射的最佳方法仍然是一个悬而未决的问题;我已经写过不同类型的权限模型Modelling a permissions system可能太多或者信息太少,这取决于您希望系统变得多么复杂.

如果您只想在位图中存储权限(例如,Linux内核为CAP_SYS_ADMIN,CAP_DAC_OVERRIDE等实现CAPABLE()),那么您可以添加一些非常简单的新权限:

if (requested_new_permission == "CAP_SYS_ADMIN")

user->permissions |= CAP_SYS_ADMIN;

else if (requested_new_permissions == "CAP_DAC_OVERRIDE")

user->permissions |= CAP_DAC_OVERRIDE;

然后,当您需要测试功能时:

if (CAPABLE(user, CAP_SYS_ADMIN))

reboot_server();

并且宏CAPABLE()可以看起来像:

#define CAPABLE(用户,上限)((用户) – >权限&(上限))

(原谅C,我只是不太了解php;我被迫修复了太多的php错误,想要自己学习它.)

如果要通过用户类将用户映射到权限,则可能是三个表:users表,组或类表以及权限表. classes具有user_id和permission_id的列.当您需要检查是否可以授予权限时,请选择用户的类,然后在类中选择权限. (自从我手写SQL以来已经好几年了;我确信单个查询可以给你一个是或否答案,但我不确定它是多表连接还是使用子查询或者它是否是只会更容易对数据库进行两次查询.:)

希望这可以帮助.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值