Spring3,Security3:系统可以在 Windows 上运行,但不能在 Linux 上运行 java.lang.IllegalArgumentException
Posted
技术标签:
【中文标题】Spring3,Security3:系统可以在 Windows 上运行,但不能在 Linux 上运行 java.lang.IllegalArgumentException【英文标题】:Spring3, Security3: System works on windows but not Linux java.lang.IllegalArgumentException 【发布时间】:2011-07-26 12:07:28 【问题描述】:系统可以在 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)
【问题讨论】:
【参考方案1】:请参阅spring forum。表达式应该是 hasRole("ROLE_USER")
【讨论】:
【参考方案2】:在 Spring 3.0 中是 access="ROLE_USER"
在 Spring 4.0 或更高版本中,为 access="hasRole('ROLE_USER')"
【讨论】:
以上是关于Spring3,Security3:系统可以在 Windows 上运行,但不能在 Linux 上运行 java.lang.IllegalArgumentException的主要内容,如果未能解决你的问题,请参考以下文章
求熟悉spring security3的高手相助 我采用了security3 实现了权限控制,出了一些奇怪的问题实在不解
spring security3怎样拦截页面中的ajax要求
SecurityContextHolder.getContext().getAuthentication()为啥Security3.1和2.0执行上面语句结果不同?
spring security3.1升级到4.1问题访问/j_spring_security_check 404