Spring中一个简单的切入点表达式

时间:2013-01-16 19:31:34

标签: spring spring-security pointcut

我正在使用Spring安全性3.2.0和相同版本的Spring框架。 Spring安全性在我的项目中运行良好。为了保护我的DAO类(和其他类)中的方法,我想使用以下切入点方法(在spring-security.xml文件中)。

<global-method-security>
    <protect-pointcut expression="execution(*controller.*.*(..))" access="ROLE_ADMIN"/>
</global-method-security>

我希望指定的切入点表达式能够保护controller包内所有类中的所有方法,并且只能由具有指定权限ROLE_ADMIN的用户访问。

但是当我尝试使用此表达式时,该过程会在保存spring-security.xml文件时终止以下异常。

  

PropertyAccessException 1:   org.springframework.beans.MethodInvocationException:Property   'pointcutMap'抛出异常;嵌套异常是   java.lang.IllegalArgumentException:切入点格式不正确:   在角色位置26期待'名字模式'   执行(控制器。。*(..))                             ^

我正在尝试遵循 3.4.1 {{>>使用protect-pointcut 子部分的添加安全性切入点中的reference document所指定的方法{{3}} 1}}元素部分。

此方案中的正确表达式语法是什么?


修改

使用protect-pointcut添加安全切入点

使用protect-pointcut特别强大,因为它允许您只使用简单的声明将安全性应用于许多bean。请考虑以下示例:

<global-method-security>

这将保护在应用程序上下文中声明的bean上的所有方法,这些bean的类在<global-method-security> <protect-pointcut expression="execution(* com.mycompany.*Service.*(..))" access="ROLE_USER"/> </global-method-security> 包中,其类名以“Service”结尾。只有具有com.mycompany角色的用户才能调用这些方法。与URL匹配一样,最具体的匹配必须首先出现在切入点列表中,因为将使用第一个匹配表达式。安全注释优先于切入点。

复制&amp;粘贴参考文档中解释的部分(因为有人可能会发现滚动文档很乏味。)

1 个答案:

答案 0 :(得分:5)

尝试使用此表达式:

<protect-pointcut expression="execution(* your.package.controller.*.*(..))" access="ROLE_ADMIN"/>