我有一个关于我的用户权限映射到Spring JWT中的访问令牌范围的问题,实际上,当我将所有用户权限映射到accesstoken范围时,如下所示:
public class AuthorityTokenEnhancer implements TokenEnhancer {
@Override
public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
User user = (User) authentication.getPrincipal();
final ImmutableMap<String, Object> additionalInfo = ImmutableMap
.builder()
.put("authorities", user.getAuthorities())
.build();
((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo);
((DefaultOAuth2AccessToken) accessToken).setScope(user.getPermissions());
return accessToken;
}
}
当我想通过@PreAuthorize("hasRole('ROLE_USER')
和#oauth2.hasScope('XXXXX')")
注释在我的WebService中测试它时。它不起作用,因为检查是基于客户端范围而不是用户访问范围?有没有办法,通过使用#oauth2.hasScope('XXXXX')
注释来使用访问令牌范围(代表我的权限用户)而不是客户端范围?我怎么能这样做?