在我的Spring Boot应用程序中
成功登录后,我在上下文中设置身份验证详细信息(在权限中具有用户角色)
// Perform the authentication
Authentication authentication = authenticationManager.authenticate(
new UsernamePasswordAuthenticationToken(
authenticationRequest.getUsername(),
authenticationRequest.getPassword()
)
);
SecurityContextHolder.getContext().setAuthentication(authentication);
但是,当我尝试使用下面的代码行再次访问代码其他部分中的角色时,权限为null。否则,它具有所有其他安全详细信息。
我想念什么?
SecurityContextHolder.getContext().getAuthentication().getAuthorities()
最佳答案
我认为您应该在创建UsernamePasswordAuthenticationToken
时添加角色,如下所示:
new UsernamePasswordAuthenticationToken(
authenticationRequest.getUsername(),
authenticationRequest.getPassword(),
roles
)
这是您应该使用的方法的签名:
UsernamePasswordAuthenticationToken(Object principal, Object credentials,
Collection<? extends GrantedAuthority> authorities)