Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法验证url模式的Spring安全性中的角色_Spring_Spring Mvc_Spring Security_Spelevaluationexception - Fatal编程技术网

无法验证url模式的Spring安全性中的角色

无法验证url模式的Spring安全性中的角色,spring,spring-mvc,spring-security,spelevaluationexception,Spring,Spring Mvc,Spring Security,Spelevaluationexception,我使用的是spring security 3.1.7.RELEASE和spring 3.2.13.RELEASE 我的spring-security.xml中有如下条目: <http auto-config="true" use-expressions="true"> <intercept-url pattern=".*admin.htm" access="hasRole(ROLE_ADMIN)" /> <intercept-url pattern

我使用的是spring security 3.1.7.RELEASE和spring 3.2.13.RELEASE

我的spring-security.xml中有如下条目:

<http auto-config="true" use-expressions="true"> 
    <intercept-url pattern=".*admin.htm" access="hasRole(ROLE_ADMIN)" />
    <intercept-url pattern="/siteadmin/*.htm" access="ROLE_ADMIN" />
    <intercept-url pattern="/siteadmin/cleancache.htm" access="hasRole('ROLE_ADMIN')" />

当我尝试点击url/siteadmin/cleancache.htm时,我得到以下异常:

java.lang.IllegalArgumentException:计算表达式失败 “角色管理” org.springframework.security.access.expression.ExpressionUtils.evaluatesBoolean(ExpressionUtils.java:13) org.springframework.security.web.access.expression.WebExpressionVoter.vote(WebExpressionVoter.java:34) org.springframework.security.web.access.expression.WebExpressionVoter.vote(WebExpressionVoter.java:18) org.springframework.security.access.vote.AffirmativeBased.decise(AffirmativeBased.java:62)

根本原因:

org.springframework.expression.spel.SpelEvaluationException: EL1008E:(位置0):在上找不到属性或字段“ROLE\u ADMIN” 类型的对象 'org.springframework.security.web.access.expression.WebSecurityExpressionRoot' -也许不公开?org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:214) org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:85) org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:78) org.springframework.expression.spel.ast.SpelNodeImpl.getTypedValue(SpelNodeImpl.java:102) org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:98) org.springframework.security.access.expression.ExpressionUtils.evaluatesBoolean(ExpressionUtils.java:11) org.springframework.security.web.access.expression.WebExpressionVoter.vote(WebExpressionVoter.java:34)


非常感谢您在同一页上的任何提示。

您有几个打字错误。第一行截取url缺少角色_ADMIN周围的单引号,第二行缺少hasRole。应该是

<http auto-config="true" use-expressions="true"> 
    <intercept-url pattern=".*admin.htm" access="hasRole('ROLE_ADMIN')" />
    <intercept-url pattern="/siteadmin/*.htm" access="hasRole('ROLE_ADMIN')" />
    <intercept-url pattern="/siteadmin/cleancache.htm" access="hasRole('ROLE_ADMIN')" />

发生的事情是,security spring的官方文档提供了您放置的示例:

<Intercept-url pattern = "/ siteadmin / *. Htm" access = "ROLE_ADMIN" />

但是你应该穿上

<Intercept-url pattern = ". * Admin.htm" access = "hasRole ('ROLE_ADMIN')" />


同意的原因是之前我没有使用任何工作正常的表达式。因此,我没有一下子改变整个xml,而是想先用几个URL来测试这个方法,这就是我面临的问题。没有问题,我过去也做过类似的事情,我也是also@KarthikeyanVaithilingam为什么这里的spring文档会出错?@JasonKrs我不是发布这个答案的人,我只是编辑了它。@Rubens我有同样的问题,但你的答案没有解决它。为什么这里的spring文档是错误的?