Как создать пользовательский контекст запроса с аннотацией Quarkus и @requestscoped?JAVA

Программисты JAVA общаются здесь
Anonymous
Как создать пользовательский контекст запроса с аннотацией Quarkus и @requestscoped?

Сообщение Anonymous »

В настоящее время я разрабатываю приложение с Quarkus для личного проекта. Чтобы обеспечить вызовы, сделанные в мой API, я настроил Quarkus-oidc. Эта часть работает очень хорошо.
Оттуда я хочу создать пользовательский контекст с аннотацией @RequestScoped и аннотированным классом @provider , который реализует ContainerRequestContext < /code> Чтобы распространить мой токен в моем приложении, не пропуская его через промежуточные слои. < /p>
Вот мой @RequestScoped аннотированный класс:

Код: Выделить всё

@RequestScoped
public class UserContext {

private String id;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}
}
< /code>
Вот мой класс фильтров: < /p>
@Provider
public class AuthenticationContextProvider implements ContainerRequestFilter {

@Inject
UserContext userContext;

@Override
public void filter(ContainerRequestContext requestContext) {
var securityContext = requestContext.getSecurityContext();

if(securityContext != null) {
var principal = securityContext.getUserPrincipal();

if(principal != null && principal instanceof JWTCallerPrincipal jwt) {
userContext.setId(jwt.getName());
} else if (principal != null) {
userContext.setId(principal.getName());
}
}
}
}
Вот как я получаю @requestscoped bean:
@Singleton
public class GreetingResource {

@Inject
UserContext userContext;

@GET
@Path("/hello")
public String sayHello() {
return "Hello " + userContext.getId();
}
}
< /code>
Проблема в том, что когда я получаю свой контекст из слоя в своем приложении (с @Inject, как с @Context), я получаю не нулевой экземпляр моего контекстного класса, но но Все его поля являются нулевым. Я установил точку останова сразу после вызова моего контекста, чтобы проверить, было ли поле обновлено, но это не так, оно все еще ноль. < /P>
Я использую Quarkus версию 3.18 .4 С этими зависимостями: < /p>
  • Quarkus-Arc < /li>
    Quarkus-rest < /li>
    Quarkus-rest-jackson
  • Quarkus-hibernate-panache
  • Quarkus-jdbc-postgresql
  • Quarkus-hibernate-Validator
  • Quarkus-oidc
Я попробовал несколько других вещей, опять же, с @requestscoped и фильтром, но, кажется, ничего не работает так, как я хочу. < /p>
Есть ли у вас какие -либо идеи ?


Подробнее здесь: https://stackoverflow.com/questions/794 ... -annotatio

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