关于RBAC权限的聊天

delphine 说:
首先需要说明的是,整个OA系统控制只能到页面,和按钮(也就是说只能到页面这一级,我还想能够控制到业务级以及数据级)OA系统拥有一些栏目,分为主栏目,二级栏目,三级栏目。比如电子公文是一级,发文管理是二级我的我的发文的三级,实际的操作界面关联的是三级栏目。现在开始说权限,权限划分首先是按部门,部门下添加人员,添加完人员后进行权限的划分,划分操作实际上就是给他访问三级栏目对应的页面。划分权限首先要给部门添加角色,在OA系统里叫职位,比如主任,科员等,在添加完角色后需要给每个角色划分权限,这也是唯一一个划分权限的地方,然后将人员添加到角色中去。比如张三,是办公室打字员,那么我们在操作的时候先加入办公室,然后在办公室里加入角色打字员,再为打字员分配打字员应该能够看到的三级栏目,最后把张三放在打字员这个角色里

 

冰云@不在状态 说:
晕 怎么又一遍
delphine 说:
我怕你关掉了MSN
冰云@不在状态 说:
这和我的差不多
冰云@不在状态 说:
 
delphine 说:
看不到前面的东西!呵呵
delphine 说:
可是有一个问题,如果这时候我要添加一个功能,如果这个功能又是基本功能,那是不是要所有的角色权限划分要重做一遍,这样做太累了!!
delphine 说:
还有
delphine 说:
我要实现一个人可能拥有多个角色如何去做
delphine 说:
比如张三是打字员,同时他也是新闻发布员
冰云@不在状态 说:
那就是manytomany的关系啊
冰云@不在状态 说:
这有何难
冰云@不在状态 说:
user.getRoles()
冰云@不在状态 说:
就是给他多个角色呗
delphine 说:
另外还有一点也比较重要,我以后需要将其它系统统统与OA相连接需要提供接口,这个接口该如何在现在的权限系统中考滤
冰云@不在状态 说:
这个嘛,看你的连接方式了
冰云@不在状态 说:
如果是小粒度的,就做一个facade,例如我的validate(user,resource,operation)
冰云@不在状态 说:
如果是大粒度,那就给个webservice之类的吧,
冰云@不在状态 说:
前提是,
冰云@不在状态 说:
role,resource,operation能够唯一确定
delphine 说:
因为模型看得不多,能不能接合我给你的例子,把它套到你的模型中,我现在正在看你的模型!!
冰云@不在状态 说:

冰云@不在状态 说:
你这里的role就是role
冰云@不在状态 说:
你这得user就是user
冰云@不在状态 说:
不同的是,我允许user有多个role
delphine 说:
那ACTOR
冰云@不在状态 说:
每个role也可以对应user
冰云@不在状态 说:
actor是user和group的统称
delphine 说:
many to many
delphine 说:
也就是是他们的基类吗?
delphine 说:
group是什么,能不能举个例子?
冰云@不在状态 说:
group,也就是你的部门
delphine 说:

冰云@不在状态 说:
这个group你可以考虑修改一下,不完全按照我的
冰云@不在状态 说:
我的group的作用就是
delphine 说:
管理user
冰云@不在状态 说:
一组人有相同的权限,那么就给这个group一个role
冰云@不在状态 说:
让user属于group
delphine 说:
嗯,这就解决了我的第一个问题
冰云@不在状态 说:
例如 某部门的人都可以看这个部门的新闻
冰云@不在状态 说:
那么就给这个部门一个新闻阅读的角色
冰云@不在状态 说:
了解吧
delphine 说:
把一些基本权限放在一个基本组里
冰云@不在状态 说:
既然user和group都是与role是many-to-many的
delphine 说:
一个用户可不可以在多个组里呢??
冰云@不在状态 说:
而且操作上基本一致,所以就做了actor
delphine 说:
显然是可以的!
冰云@不在状态 说:
可以阿,user,role,group之间都是mtom
delphine 说:

delphine 说:
actor主要负责处理权限
冰云@不在状态 说:
你的各种栏目等
冰云@不在状态 说:
no,actor就是user和group的统称
冰云@不在状态 说:
你的各种栏目等,就是我说的资源
delphine 说:
明白 了
冰云@不在状态 说:
资源可以细分到不同粒度
冰云@不在状态 说:
例如,电子公文+id为5
delphine 说:
我想只做大力度的
delphine 说:

冰云@不在状态 说:
那就看你的设定了
冰云@不在状态 说:
另外就是个操作的概念
delphine 说:
你继续说
冰云@不在状态 说:
对不同资源的操作
冰云@不在状态 说:
例如最简单的CRUD
delphine 说:
CRUD什么意思?
冰云@不在状态 说:
一个资源+一个操作,就是一个权限
冰云@不在状态 说:
数据库的CRUD!!增删改查
冰云@不在状态 说:
一个资源+一个操作,就是一个权限
冰云@不在状态 说:
例如,对电子公文的阅览
delphine 说:
就是isRight(user,Resource,Operation)
冰云@不在状态 说:
把这个权限Privilege,给一个role
冰云@不在状态 说:
那么这个role就可以有这个权限
冰云@不在状态 说:
把这个role给user,那user就可以阅读电子公文了
冰云@不在状态 说:
ok ? 大致就这样
delphine 说:
resource就相当于我的三级栏目是吧
冰云@不在状态 说:
不是
冰云@不在状态 说:
所有的栏目都是resource
delphine 说:
operaton就相当于我对三级栏目中的RCUD
冰云@不在状态 说:
可以做成层次的resource
冰云@不在状态 说:

冰云@不在状态 说:
还可以细分operation
delphine 说:
哦!
delphine 说:
怎么细分?
冰云@不在状态 说:
例如list,read,create,delete,modify,manage,admin等等
delphine 说:
那这样做是不是会给我的业务逻辑程序的编写带来困难
冰云@不在状态 说:
应该 不会吧
delphine 说:
比如我要先定义manage与admin等操作的权力
冰云@不在状态 说:
?不用阿
delphine 说:
要不业务逻辑怎么知道manage要做什么操作,admin要做什么操作?
冰云@不在状态 说:
任何的资源都有这些操作
冰云@不在状态 说:
你可以考虑一个层次的operation模型
冰云@不在状态 说:
例如,新建一个公文
冰云@不在状态 说:
当然是create操作
delphine 说:
比如manage(create,list)admin(delete,modify,list),业务逻辑怎么知道我的定义?
冰云@不在状态 说:
那么,凡是operation包含create的都可以执行
冰云@不在状态 说:
还是这个,比如建立公文,你要求有create操作的权限
冰云@不在状态 说:
那么有manage权限的就可以做,而admin就不能
delphine 说:
那我是不是要事先给Resource定义好Operation
冰云@不在状态 说:
不用
delphine 说:
为什么?
冰云@不在状态 说:
我的作法是,用到的时候再定义
delphine 说:
怎么做呢?
冰云@不在状态 说:
就是判断权限的时候,例如判断用户是否可以对 资源A有B操作
冰云@不在状态 说:
这时候我当然要读操作和资源表了,发现这二者还没有关联,那么就创建一个权限(A,B)
冰云@不在状态 说:
新创建的权限,当然不可能有人有,所以返回false
delphine 说:
那B的操作在哪里定义呢?我怎么知道这时候manage包含(create,list)
冰云@不在状态 说:
操作一般是固定的一些,这倒是可以提前定义好
冰云@不在状态 说:
最多能有10来个
delphine 说:
10来个,我怎么就觉得只有list,update,delete啊
冰云@不在状态 说:
嘿,这是你对数据库的操作
冰云@不在状态 说:
别忘了还有文件系统
冰云@不在状态 说:
比如move
delphine 说:
能不能把你的定义我看看!!
delphine 说:
哦!!
冰云@不在状态 说:
我就定义了数据库的一些,和你的差不多,哈哈
delphine 说:
看来我的视野还是比较小啊!!嘿嘿
delphine 说:
这种定义方法我觉得可以用0000000000001这样来定义
delphine 说:
你看好不好?
冰云@不在状态 说:
可以啊,操作内部的实现就随便了
冰云@不在状态 说:
不过这样做有局限呵呵
delphine 说:
好了,然后组合Operation 就是基本Operation或操作
delphine 说:
比如
delphine 说:
0001是读
delphine 说:
0010是写
delphine 说:
那0011就是读写
冰云@不在状态 说:
你这只能定义一个链式层次
delphine 说:
你觉得呢?
冰云@不在状态 说:
树形的怎么办
delphine 说:
树型是什么意思?
冰云@不在状态 说:
嗯,实际上我也是这样定义的
冰云@不在状态 说:
不过觉得不很好
冰云@不在状态 说:
看情况吧! 不方便的话再改
冰云@不在状态 说:
用数字,增加一个操作就复杂了,全要改
delphine 说:
你是说树型的权限?
冰云@不在状态 说:
相当于数组和链表的区别
冰云@不在状态 说:
你在哪工作?
delphine 说:
要改只可能改基本权限
delphine 说:
组合权限可以由基本权限得到
冰云@不在状态 说:
我是说增加一个操作就复杂了
delphine 说:
哦!!
delphine 说:
那到是的!!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值