我正在使用带有 spring security 的 JWT 来处理我的 REST API 端点的授权。在以下示例中,端点提供有关用户的信息。假设我希望只有ADMIN
用户能够获取所有用户的详细信息,任何其他用户都应该只获取他/她的帐户详细信息。任何人都可以想到一种更具声明性的方式来使用注释或 AOP 来实现与以下代码等效的代码。
@RequestMapping(value = "user/{userId}", method = RequestMethod.GET)
@PreAuthorize("hasAnyRole('USER', 'ADMIN')")
public UserDetailsDto getUserDetails(
@AuthenticationPrincipal JwtUser user,
@PathVariable String userId) {
if (!user.getId().equals(userId) && user.getRole != Role.ADMIN)
throw new BadCredentialsException("Jwt token id and requested ids do not match");
//handle the request
}