我已向relative question询问 hasAuthority()和 hasRole()和this part is clear。 我尝试使用group authorities配置我的应用程序。如果我使用指令 .hasAuthority(" ADMIN")
,配置对我有用http
.antMatcher("/monitor/console/**")
.authorizeRequests()
.antMatchers("/monitor/console/**")
.hasAuthority("ADMIN")
.... // other unimportant java code..
但如果我将其更改为 .hasRole(" ADMIN")或 .hasRole(" ROLE_ADMIN")限制呢?不行。我可以在 JdbcDaoImpl 服务中检查登录时加载的用户详细信息,我可以看到附加的权限列表,但我不知道为什么 hasRole(..)不起作用。我希望有人知道我需要使用断点检查对象状态并比较结果或如何修复它。
我真的很困惑,因为当我使用单个权限表时,限制工作正常...
答案 0 :(得分:1)
在Spring中,角色与权威相同。在Spring Security 4之前,它们都以相同的方式处理。方法hasAuthority()在内部调用方法hasRole()。
现在使用Spring Security 4,方法hasRole()将前缀ROLE_添加到角色的名称中,因此hasAuthority(' ROLE_ADMIN')与hasRole(' ADMIN&#)相同39;)因为ROLE_前缀会自动添加。
在您的情况下,我认为您需要在加载角色时将前缀ROLE_添加到数据库中的角色o。