Java 通过组的Spring security JDBC身份验证机构

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(…)不起作用。我希望有人知道我需要在哪里使用断点来检查对象状态和比较结果,或者如何修复它 我真的很困惑,因为

我问过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..