在我的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)

07-24 09:47