Wie erstelle ich einen benutzerdefinierten Anforderungskontext mit Quarkus und @RequestScoped Annotation?Java

Java-Forum
Anonymous
 Wie erstelle ich einen benutzerdefinierten Anforderungskontext mit Quarkus und @RequestScoped Annotation?

Post by Anonymous »

Ich entwickle derzeit eine Anwendung mit Quarkus für ein persönliches Projekt. Um die Anrufe an meine API zu sichern, habe ich Quarkus-oidc konfiguriert. Dieser Teil funktioniert sehr gut. /Code> Um mein Token in meiner Anwendung zu verbreiten, ohne es durch die Zwischenschichten zu übergeben. < /p>
Hier ist mein @RequestScoped kommentierte Klasse:

Code: Select all

@RequestScoped
public class UserContext {

private String id;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}
}
< /code>
Hier ist meine Filterklasse: < /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());
}
}
}
}
Hier finden@Singleton
public class GreetingResource {

@Inject
UserContext userContext;

@GET
@Path("/hello")
public String sayHello() {
return "Hello " + userContext.getId();
}
}
< /code>
Das Problem ist, dass ich, wenn ich meinen Kontext aus einer Ebene in meiner Anwendung abzurufen (mit @inject wie bei @Context), eine Nicht-Null-Instanz meiner Kontextklasse abgerufen, aber aber Die Felder sind alle null. Ich habe einen Haltepunkt kurz nach dem Anruf in meinen Kontext -Setter festgelegt, um zu überprüfen, ob das Feld aktualisiert wurde, aber es war nicht, es ist immer noch null. .4 mit diesen Abhängigkeiten: < /p>
  • Quarkus-arc < /li>
    Quarkus-rest < /li>
    quarkus-rest-jackson
  • quarkus-hibernate-orm-panache
  • quarkus-jdbc-postgresql
  • quarkus-hibernate-validator
  • quarkus-oidc
Ich habe ein paar andere Dinge ausprobiert, wieder mit @RequestScoped und einem Filter, aber nichts scheint so zu funktionieren, wie ich es möchte. < /p>
Haben Sie irgendwelche Ideen ?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post