Java 通过组的Spring security JDBC身份验证机构
我问过hasAuthority()和hasRole()以及。 我尝试使用配置我的应用程序。如果我使用指令.hasAuthority(“ADMIN”) 但如果我将其更改为.hasRole(“ADMIN”)或.hasRole(“ROLE\u ADMIN”)则限制不起作用。我可以在JdbcDaoImpl服务中查看登录时加载的用户详细信息,我可以看到附加的权限列表,但我不知道为什么hasRole(…)不起作用。我希望有人知道我需要在哪里使用断点来检查对象状态和比较结果,或者如何修复它Java 通过组的Spring security JDBC身份验证机构,java,spring-security,spring-boot,spring-java-config,Java,Spring Security,Spring Boot,Spring Java Config,我问过hasAuthority()和hasRole()以及。 我尝试使用配置我的应用程序。如果我使用指令.hasAuthority(“ADMIN”) 但如果我将其更改为.hasRole(“ADMIN”)或.hasRole(“ROLE\u ADMIN”)则限制不起作用。我可以在JdbcDaoImpl服务中查看登录时加载的用户详细信息,我可以看到附加的权限列表,但我不知道为什么hasRole(…)不起作用。我希望有人知道我需要在哪里使用断点来检查对象状态和比较结果,或者如何修复它 我真的很困惑,因为
我真的很困惑,因为当我使用单权限表时,限制功能正常工作…在Spring中,角色与权限相同。在SpringSecurity4之前,它们都是以相同的方式处理的。方法hasAuthority()刚刚在内部调用了方法hasRole() 现在使用SpringSecurity4,方法hasRole()将前缀ROLE添加到角色名称中,因此hasAuthority('ROLE_ADMIN')与hasRole('ADMIN')相同,因为角色前缀会自动添加 你可以在这里看到更多
在您的情况下,我认为您需要在加载角色时将前缀ROLE_uu添加到数据库o中的角色中。对不起,我不理解您的意思。那么,如果我的hasAuthority(…)工作正常,但hasRole(…)已损坏,原因是什么呢?另外,如果您相信ROLE_uu前缀规则,请注意两种情况:1。我知道这个规则(见问题描述)。2.我得到了答案,但没有。我的角色前缀被“”覆盖。关键是,方法hasRole()将前缀role_uu添加到rolename receive as参数中。您当前的权限是ADMIN,因此当您调用hasRole(“ADMIN”)时,它将查找ROLE\u ADMIN,而这并不存在(仅存在ADMIN而不存在ROLE\u ADMIN),当您调用hasRole(“ROLE\u ADMIN”)时,它是相同的。我认为您需要将权限的名称改为ROLE_ADMIN而不是ADMIN,因此当您调用hasRole(“ADMIN”)时,它会查找ROLE_ADMIN。
http
.antMatcher("/monitor/console/**")
.authorizeRequests()
.antMatchers("/monitor/console/**")
.hasAuthority("ADMIN")
.... // other unimportant java code..