Я могу получить объект Jwt, используя @AuthenticatedPrincipal в контроллере, и у меня есть доступ к данным jwt в аннотациях управления доступом к методу, например @PreAuthorize:
Код: Выделить всё
@PreAuthorize("principal.claims['id']=='100'")
@GetMapping
public Jwt test(@AuthenticationPrincipal Jwt principal) {
return principal;
}
Код: Выделить всё
@PreAuthorize("principal.id==100")
@GetMapping
public MyPrincipal test(@AuthenticationPrincipal MyPrincipal principal) {
return principal;
}
Код: Выделить всё
public class JwtPrincipal implements MyPrincipal {
private final Integer id;
public JwtPrincipal(Jwt jwt) {
this.id = Integer.parseInt(jwt.getClaim("id"));
}
@Override
public Integer getId() {
return id;
}}
Код: Выделить всё
@Bean
public JwtPrincipalConverter jwtPrincipalConverter() {
return JwtPrincipal::new;
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... pal-object
Мобильная версия