关于 权限模块

    
edison87915
11-10-21 2 576 4

参阅了JDON中几个关于权限设计的帖子,如 http://www.jdon.com/jivejdon/thread/2897,思维上有些理解了,但是对于怎样实现还是很模糊,比如:用户U的某一个操作operate1,当这个操作请求被服务器接收并交给Permission来判断是否有权限的时候,Permission模块如何获知这个操作(operate1)关系到哪个资源(resource)的哪个权限(privilege)呢?

我知道有一种实现方法,比如一个通告的新增(CREATE)操作,流程如下:
1.请求通告新增页面,在转向这个页面的同时,将这个页面将要进行的操作标识传过去(如:task=create_announce)
2.转到页面时,用hidden表单项保存这个task标识
3.提交新增通告的操作,权限判断:Permission根据TASK参数来判断当前操作-相关的resource和privilege,以便判断权限

貌似STRUTS中有一个示例简单的用了这种方式,感觉缺点很多。

一是权限的管理涉及到了表示层,需要页面来配合
二是安全问题,恶意的用户可以更改TASK表单项的值,再提交,不过可以将TASK表单项的KEY-VALUE都加密进行传输,有点麻烦了

所以想问问大师们权限管理 实现的基本流程,权限管理的基本思想我已经了解了不少。权限判断的核心的重要几个接口也了解一点,可能思维太窄了,所以在想,用户的任一一个操作,权限管理类如何获知这个操作-相关的resource和privilege

记得banq说过的,貌似banq的意思是将privilege等同于function,这意思是?直接根据service层的具体方法(名称)来判断当前操作的resource和privilege吗。。。。

4
banq
2011-10-22 12:05

操作作为事件 event sourcing ,对事件 进行AOP拦截然后根据授权规则决定是否放行。

edison87915
2011-10-24 00:44

非常感谢banq,每次都是你给指点。你说的这种方法类似于JIVE中用proxy代理来专门处理权限是吧,学习了,还需仔细研究研究JIVE中权限的实现方式,谢了