Java Spring Security不适用于";hasRole(角色管理);或角色管理

Java Spring Security不适用于";hasRole(角色管理);或角色管理,java,spring,spring-security,Java,Spring,Spring Security,我使用的是Spring安全版本4.1。如果我在安全配置中指定access=“hasRole('ROLE\u ADMIN')”或access=“ROLE\u ADMIN”,我可以登录,但无法访问我的管理页面 以下是调试错误: DEBUG[http-bio-8080-exec-10][org.springframework.security.web.access.intercept.FilterSecurityInterceptor]安全对象:过滤器职业:URL:/admin;属性:[hasRo

我使用的是Spring安全版本4.1。如果我在安全配置中指定
access=“hasRole('ROLE\u ADMIN')”
access=“ROLE\u ADMIN”
,我可以登录,但无法访问我的管理页面


以下是调试错误:

DEBUG[http-bio-8080-exec-10][org.springframework.security.web.access.intercept.FilterSecurityInterceptor]安全对象:过滤器职业:URL:/admin;属性:[hasRole('ROLE\u ADMIN')]
2016-06-25 10:07:53667[]调试[http-bio-8080-exec-10][org.springframework.security.web.access.intercept.FilterSecurityInterceptor]先前已验证:org.springframework.security.authentication。UsernamePasswordAuthenticationToken@cc305a73:Principal:org.springframework.security.core.userdetails。User@74b46745:用户名:francatore;密码:[受保护];启用:真;AccountNoExpired:正确;无需证明的凭证:真实;AccountNonLocked:true;授予的权限:角色\管理员;凭据:[受保护];认证:正确;详细信息:org.springframework.security.web.authentication。WebAuthenticationDetails@166c8:RemoteIP地址:0:0:0:0:0:0:0:0:1;会话ID:7F702A691A71EA556C750B6D424FF5;授予的权限:角色\管理员
2016-06-25 10:07:53667[]调试[http-bio-8080-exec-10][org.springframework.security.access.vote.AffirmativeBased]投票人:org.springframework.security.web.access.expression。WebExpressionVoter@170ea084,返回:-1
2016-06-25 10:07:53668[]调试[http-bio-8080-exec-10][org.springframework.security.web.access.ExceptionTranslationFilter]访问被拒绝(用户不是匿名的);委托给AccessDeniedHandler

我可能遗漏了什么?

对此我有一个小小的解释。 在这里,您已作为普通用户进行身份验证,但无权查看管理员页面

如果您使用的是
access=“hasRole('ROLE_ADMIN')”
表达式,则Spring EL类(即
SecurityExpressionRoot
)将为每个角色添加前缀
ROLE\uu
我们在
hasRole()
表达式中提供的。因此,在您的案例中,您在
hasRole('role\u ADMIN')
中提供的角色解析为
role\u role\u ADMIN

这就是为什么您被认证为具有
角色\u ADMIN
的用户。但是要想让Spring安全框架查看管理页面,用户必须具有
ROLE\u ROLE\u ADMIN
(因为
SecurityExpressionRoot
类添加了
ROLE\u
前缀)

因此,为此,请删除代码中的
ROLE\uu
前缀,即这里的
access=“hasRole('ADMIN')”
因此,Spring Security将自动添加
角色
前缀。
并确保您已将数据库中的管理员角色指定为
role\u admin

当用户创建帐户时,该卷已分配给该用户。上面的用户被分配为“角色\管理员”,而其余用户被分配为“角色\用户”。角色保存在数据库中的“权限”表中。