【发布时间】:2019-08-08 05:02:08
【问题描述】:
我正在使用自定义的 UserDetailService,它可以很好地进行身份验证。问题是我不能使用基于角色的约束。
奇怪的是,我从控制器那里得到了正确的权限:
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")
…
用户无法访问页面,例如/管理员/成员。
thymeleaf-security-tags 也是如此,例如
<div sec:authorize="isAuthenticated() && hasRole('ADMIN')">Hello Admin!</div>
不显示“您好管理员!”对于控制器记录权限“ADMIN”的用户。
我猜我遗漏了什么或使用了错误的东西。
感谢您的时间和帮助。
【问题讨论】:
-
你试过 hasRole('ROLE_ADMIN') 还是使用 hasAuthority('ADMIN')
-
谢谢,hasRole('ROLE_ADMIN') 不起作用,但 hasAuthority('ADMIN') 方法就像一个魅力......在 thymeleaf-security 和 spring 配置中。有谁知道如何在自定义 UserDetailService 中设置主体角色。
-
关闭此问题并打开一个新问题
标签: spring security roles authority