乱谈权限管理

做一个系统。权限管理是必不可少的。特别是WEB开发。以下是我自误自乐写的权限管理。欢迎大家拍砖。。

在我看来,权限分为两种:资源权限和操作权限。平时我们说某种角色在特定的系统中有添加或者是删除某个数据

的权限。抽象出来某个数据实体就是一种资源,而某种操作就是具体的操作权限。并不是说你有删除或者是添加的

权限。如果脱离了实体(资源),对权限而言是无任何意义的。

在权限管理中我们需要解决的问题有三种:

1。固定的菜单权限(如当前登陆者对某个url页面是否有权限)

2。动态权限(也就是所谓的行权限),所谓行权限就是数据范围不同(不同的人看到不同行数的数据)。比如部

门经理可以看到整个部门的单据,而业务员只能看到自己的。

3。对某个资源的特定操作是否有权限:如客户有分组,你有查看某个组的权限。但是你不是组的创始人,你不具备修改该组的权限。(就好比在windows中共享了某个文件夹是只读属性一样,而并非是完全控制)

基于以上的问题:

设计数据库是需要注意的几点:

user 用户表:只要记录用户的基本信息就可以

role角色表id,name:记录角色名和id

group组表:id,name记录组名和id

u_group用户和组关系表:一个用户可以属于多个组,而一个组也可以对应多个用户(映射到权限上就是一个用户

有多种角色也就是多种不同的权限。而同一种权限也可能对应多个不同的用户)

u_role表:用户角色表(同用户和组的关系表,意义机近)。在这我把组和角色作为同等级的

action表用于实现第一个问题所谓的菜单栏的固定权限(定义资源url)其字段有id,url,name,flag

action_role 表是表示资源与role的关系

actid, roleid,roletype,flag:其中角色类型有组和角色或者是部门,flag就是定义具体权限的标志位

针对第一个问题:我们可以很方便地实现。首先定义好一个action,然后对这个actionid定义好一组action_role记录

在具体的程序页面。我们只有检查check(url)就好了。。

第二个问题解决起来就有些麻烦了。不过我们在这过程中有引进一个资源问题。也就是你所针对的某个操作对象

我的实现思想是这样的:在定义action时,加上一个特殊的flag.表示这个action检查需要额外加条件的(与第一种

情况区分)。

未完待续。。。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值