Spring Boot Oauth2 Основной объектJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Spring Boot Oauth2 Основной объект

Сообщение Anonymous »

Я использую Springboot3 с Spring-boot-starter-oauth2-resource-server.
Я могу получить объект Jwt, используя @AuthenticatedPrincipal в контроллере, и у меня есть доступ к данным jwt в аннотациях управления доступом к методу, например @PreAuthorize:
@PreAuthorize("principal.claims['id']=='100'")
@GetMapping
public Jwt test(@AuthenticationPrincipal Jwt principal) {
return principal;
}

Есть ли какой-нибудь способ справиться с пользовательским объектом-участником в @PreAuthorize и @AuthenticationPrincipal, как здесь:
@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;
}}

Я хотел бы добавить такую ​​возможность, если нет простого способа реализовать ее в текущей реализации Spring Security. Со стороны разработчика было бы достаточно добавить MyPrincipal, JwtPrincipal и bean-компонент:
@Bean
public JwtPrincipalConverter jwtPrincipalConverter() {
return JwtPrincipal::new;
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... pal-object
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»