Spring安全授权-管理员被拒绝访问
角色admin的授权被拒绝访问整个系统-admin和主页。因此,我在/main/home拦截url中添加了角色_ADMIN 这是安全xmlSpring安全授权-管理员被拒绝访问,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
<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')"