web后台权限设计有哪几种实现方式
如:
菜单1
菜单2
菜单3
……
设计:
表: 主键,帐号,密码,权限
1 * * 1,2
2 * * 1,2,3
3 * * 2
4 * * 4
就是把有权限的放入【权限】字段
大家有什么好的方法
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
比较简单的 像 ACL(访问控制列表) 这种。一般都满足项目需要。
稍复杂一些的有 RBAC (基于较色的权限控制)。
php 里面有一个不错的RBAC实现phprbac
一般情况下 ACL 就已经够用了。
很高兴回答楼主的问题。
关于权限系统的设计,对于MIS系统来说,基本都是必备的。现在很多公司,都是有通用的权限系统的整套解决方案,而楼主提出的权限设计,是可行的,的确有很多的MIS是这么干的,没有问题。对了,还需要添加一张表,定义权限。
我以前做的系统是把权限放在一个单独的字段,用一个char来放的,每一位表示一个权限,然后写一个帮助类去设置和获取每个权限。
我的设计也是一个字段来判断权限,对这种设计的利弊没有多深的了解,谁有好的见解分享下
1.ACL
2.RBAC
有一点要说一句:使用RBAC时,大家喜欢建一张user和role的关联表,其实直接将role_id作为user的一个属性才是正道。
欢迎继续讨论。
role和node表是多对多关联的。角色A有1、2、3三个功能点,角色D有1、3、5三个功能点,现在多了一个新功能100,给角色A角色D都增加新功能100的权限。我所说的是user和role一对一关联,一个用户就一种角色。u1需要1、2、3、5、100这些功能,就建立一个角色E,角色E关联1、2、3、5、100这些功能点。u1的role属性设置为E。如果按照以往的方式,就是u1关联了角色A和角色D,查询出角色A和角色D的功能点,合并后就是u1拥有的权限。
就算权限系统向QQ那样复杂,每一级QQ等级都有不同的功能点,那就每一个等级是一个角色,每个QQ用户的等级是唯一的。那角色表最多就一百多个角色,而不是user关联一堆role。
还有一点,系统新功能添加的频繁程度和获取用户功能权限的频率肯定是不能比的。越简单往往意味着高性能和稳健。
一般很多都是用RBAC 就算不是也是这种类似的逻辑 可以做实时验证和登陆验证两种
跨部门任职的人,权限很麻烦
使用rbac就可以了啊
@Mr_Jing
来个折中,可以在user表中添加一个role_ids字段,用来存储一个或多个角色编号,多个则用逗号分隔.
这样做可以省去一张关系表,简化插入操作,否则一个用户对应多个角色就要插入多条关系记录,现在用一个字段搞定.
不过这样做也存在一个问题,就是如果后期删除了一个角色,如何才能相应地删除掉user表中role_ids字段里的角色编号呢? 我的做法是,不用理会user表role_ids字段里被删除的角色. 因为编辑用户时,根据角色表显示的可选的角色列表中,是不会出现被删除的角色的. 而且这也不会影响到正确获取用户权限的逻辑.
同理,在role角色表里也添加一个perm_ids字段,用来存储一个或多个权限编号,多个则用逗号分隔.