我正在使用自定义的 UserDetailService ,它可以很好地进行身份验证。问题是我不能使用基于角色的约束。
奇怪的是,我从 Controller 获得了正确的权限:
public ModelAndView getMembers(HttpServletRequest request, Authentication auth)
{
if(auth != null)
{
for (GrantedAuthority ga : auth.getAuthorities())
{
// works find and logs "ADMIN", btw. I'm using SimpleGrantedAuthority
this.logger.debug("0{}", ga);
}
}
}
但是随着配置
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/Admin/**").hasRole("ADMIN")
…
用户无法访问例如 /Admin/Member 的页面。
thymeleaf-security-tags 也是如此,例如
<div sec:authorize="isAuthenticated() && hasRole('ADMIN')">Hello Admin!</div>
不显示“你好管理员!” 对于控制器记录权限“ADMIN”的用户。
我猜我错过了一些东西或使用了错误的东西。
感谢您的时间和帮助。