Spring安全授权-管理员被拒绝访问

Spring安全授权-管理员被拒绝访问,spring,security,spring-mvc,spring-security,Spring,Security,Spring Mvc,Spring Security,角色admin的授权被拒绝访问整个系统-admin和主页。因此,我在/main/home拦截url中添加了角色_ADMIN 这是安全xml <http auto-config="true" use-expressions="true"> <intercept-url pattern="/**" requires-channel="https" /> <intercept-url pattern='/main/home/' access="hasRole('ROLE

角色admin的授权被拒绝访问整个系统-admin和主页。因此,我在/main/home拦截url中添加了角色_ADMIN

这是安全xml

<http auto-config="true" use-expressions="true">

<intercept-url pattern="/**" requires-channel="https" />
<intercept-url pattern='/main/home/' access="hasRole('ROLE_USER' 'ROLE_ADMIN')" />
<intercept-url pattern='/admin/admin/**' access="hasRole('ROLE_ADMIN')" />
<intercept-url pattern='/main/user/setter/settingpage' access="hasRole('ROLE_USER')" />
<intercept-url pattern='/main/user/setter/addpage' access="hasRole('ROLE_USER')" />
<intercept-url pattern='/login.jsp' access='IS_AUTHENTICATED_ANONYMOUSLY' /> 

<form-login login-page="/login.jsp" default-target-url="/main/home" authentication-failure-url="/auth/loginfail?error=true"/>

</http>  

但这使得整个程序停止工作,就像我运行代码时一样,因为它是错误的

无法分析表达式“hasRole('ROLE\u USER''ROLE\u ADMIN')”


当我确实删除
角色\u ADMIN
时,系统工作正常,可以对用户进行身份验证,而不是
角色\u ADMIN
用户,他们现在被拒绝访问所有页面。在db中,我设置了角色,直到最近才开始工作

如错误消息所示

无法分析表达式“hasRole”(“角色\用户”“角色\管理员”)

您需要使用带有逗号分隔的权限列表的
hasAnyRole()

如果当前主体具有任何提供的角色,则返回true (以逗号分隔的字符串列表形式给出)

所以改变

<intercept-url pattern='/main/home/' access="hasRole('ROLE_USER' 'ROLE_ADMIN')" />


SpEL:Spring表达式语言

access="hasRole('ROLE_USER') and hasRole('ROLE_ADMIN')"
此外:

IS_AUTHENTICATED_ANONYMOUSLY
isAnonymous()
access="hasRole('ROLE_USER') and hasRole('ROLE_ADMIN')"
access="hasRole('USER_ADMIN') and hasIpAddress('192.168.1.10')"