如何控制java方法的权限,除了配置文件和注解。

skydazzle 2012-05-28
如何控制java方法的权限,除了配置文件和注解。以下是两种方式。
<global-method-security>
        <protect-pointcut
            expression="execution(* com.goodwill.empi.remote.flex.*Service.store*(..))"
            access="ROLE_ADMIN"/>
        <protect-pointcut
            expression="execution(* com.goodwill.empi.remote.flex.*Service.obtain*(..))"
            access="ROLE_USER"/>
    </global-method-security>


@PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')")
public String obtainAllBooks();


    除了这种两种方法还有其他的方法吗? 可以通过代码来绑定方法的权限吗 ?
cywhoyi 2012-05-28
小弟不才,想到aop代理机制,同样采用注解或配置文件
dongcb678 2012-05-28
能不能不吃东西又能不饿呢
mazzystar 2012-05-28
用意念控制
fxrz12 2012-05-29
java权限的控制已有较完善的机制,基本原理是依托对jvm类加载的限制达到的,
像tomcat,它的安全策略文件是一个比较好用的权限控制利器,实现了最严格的权限控制。
jadethao 2012-06-27
也就想到了aop控制,别的还真没想到!
bjzk_2012_zk 2013-08-02
桥接模式有一种特殊应用,可以对类成员方法进行编译级别的控制。
举例:用dao和service为例
一个basedaoimpl抽象类,实现所有dao方法(我使用springdata,估只需实现CRUD(create,read,update,delete)四类方法即可)。
Idao接口分为CRUD四个,分别定义CRUD方法。
Iservice接口需继承Idao接口(根据继承的Idao决定Iservice该拥有的行为),
service实现Iservice并继承basedaoimpl抽象类.
这样就可以通过控制Iservice接口控制service的成员。
实现编码级别,编译级别的java方法权限控制。

备注:相当于虽然basedaoimpl是service的父类,但是Iservice约束了service该暴露给开发者哪些方法,Iservice中没有的方法service在编译级别上调用不到。

ps:不知道大家能听懂吗?
Global site tag (gtag.js) - Google Analytics