21dwr - DWR 与 Acegi整合

简介: 21dwr - DWR 与 Acegi整合

整合 DWR 和 Acegi 是为了保护 bean 方法调用

在此之前有必须熟悉 spring 和 acegi,我就不解释 acegi 的配置了,您可以从 acegi 网站下载最新版本。

问题提出

我们必须保护一个 bean,通过 DWR 设置“exposed”。

Acegi 是一个基于 Spring 的安全机制的框架,这个例子告诉你如何去阻止通过网页访问一个 bean 方法,

如果它没有权限的。

在 dwr.xml 里,在没有 acegi 保护下,我们这样声明 bean

<create creator="spring" javascript="loanDWR" beanName="loanDWR">
<include method="addLoan" />
</create>

在 Spring 配置文件里,这个 addLoan 方法被网页调用,这个 loadDWR bean 是一个 Spring 管理的 bean

<bean id="loanDWR" class="fr.iremia.jlab.web.dwr.LoanDWR">
  <property name="personDAO">
    <ref bean="personDAO" />
  </property>
  <property name="loanDAO">
    <ref bean="loanDAO" />
  </property>
</bean>

解决方案

然后我们怎么去阻止没有权限的访问 loanDWR.addLoan 这个方法呢?如下所示:

- 创建一个安全机制的拦截器

<bean id="loanDWRSecurityInterceptor"
  class="net.sf.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor">
<property name="authenticationManager" ref="authenticationManager" />
<property name="accessDecisionManager" ref="httpRequestAccessDecisionManager" />
<property name="objectDefinitionSource">
  <value>fr.iremia.jlab.web.dwr.LoanDWR.addLoan=edit,admin</value>
</property>
</bean>

LoanDWR.addLoan 方法,只能被管理员或者有修改角色权限的用户 edit 调用

想要了解 acegi 的属性:authenticationManager 和 httpRequestAccessDecisionManager,请参考

http://acegisecurity.org/docbook/acegi.html

- 为 bean 创建一个代理

给原有的 loanDWR Spring bean 添加一个代理,使用 Spring proxyfactorybean:

<bean id="loanDWRSecure" class="org.springframework.aop.framework.ProxyFactoryBean">
  <property name="target" ref="loanDWR" />
  <property name="interceptorNames">
    <idref local="loanDWRSecurityInterceptor" />
  </property>
</bean>

现在,loadDWRSecure 是个代理被 loanDWR 调用,每个调用 addLoan 方法将被 Acegi 拦截,只有拥有权限的用户才能调用

- 修改 dwr 配置文件

我们现在需要修改

<create creator="spring" javascript="loanDWR" beanName="loanDWRSecure">
  <include method="addLoan" />
</create>
目录
相关文章
|
开发框架 安全 JavaScript
51dwr - 安全
51dwr - 安全
37 0
16dwr - DWR 与 JSF整合
16dwr - DWR 与 JSF整合
52 0
|
Java Spring
15dwr - DWR 与 Spring整合
15dwr - DWR 与 Spring整合
57 0
|
前端开发 Java 数据库连接
19dwr - DWR 与 Hibernate整合
19dwr - DWR 与 Hibernate整合
32 0
|
前端开发 JavaScript Java
01dwr - dwr简介
01dwr - dwr简介
42 0
|
JavaScript 前端开发
45dwr - DWR Annotations
45dwr - DWR Annotations
23 0
|
Java PHP
17dwr - DWR 与 Struts整合
17dwr - DWR 与 Struts整合
35 0
|
6月前
|
JavaScript 前端开发 Java
DWR3使用
DWR3使用
|
前端开发 JavaScript Java
20dwr - DWR 与 WebWork整合
20dwr - DWR 与 WebWork整合
48 0
|
缓存 JavaScript 前端开发
14dwr - DWR 与 Servlet整合
14dwr - DWR 与 Servlet整合
56 0