Spring3,Security3:系统适用于Windows但不适用于Linux java.lang.IllegalArgumentException

时间:2011-03-30 23:23:43

标签: java tomcat spring-mvc spring-security

系统适用于Windows,但不适用于Linux。我可以登录确定并列出数据但是一旦我转到以下任何页面,我就会收到以下错误:

<http auto-config="true" use-expressions='true'>
        <intercept-url pattern="/friends/**" access="ROLE_USER" />
        <intercept-url pattern="/articles/**" access="ROLE_USER" />
</http>

java.lang.IllegalArgumentException异常

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.IllegalArgumentException: Failed to evaluate expression 'ROLE_USER'
    org.springframework.security.access.expression.ExpressionUtils.evaluateAsBoolean(ExpressionUtils.java:13)
    org.springframework.security.web.access.expression.WebExpressionVoter.vote(WebExpressionVoter.java:34)
    org.springframework.security.access.vote.AffirmativeBased.decide(AffirmativeBased.java:50)
    org.springframework.security.access.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:203)
    org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:106)
    org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)

2 个答案:

答案 0 :(得分:14)

请参阅spring forum。表达式应为hasRole(“ROLE_USER”)

答案 1 :(得分:3)

在Spring 3.0中,它是access =“ROLE_USER”

在Spring 4.0或更高版本中,它是access =“hasRole('ROLE_USER')”