1

エンティティを変更したユーザーをログに記録しようとしています。リバース プロキシは、要求ヘッダーにユーザー名を設定しています。

残りの Panache を使用して JAX-RS CRUD を公開する場合、リクエストとヘッダーを独立したクラスから読み取るにはどうすればよいですか?

私が試したものの例の下ですが、nullまたはnullポインターのexepを取得しています

package org.acme.manrest;

import javax.enterprise.context.RequestScoped;
import javax.persistence.PrePersist;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;

import org.acme.jpa.TBusiness;
import org.jboss.logging.Logger;

@RequestScoped
public class HeaderValue {
  private static final Logger LOG = Logger.getLogger(HeaderValue.class);

  @Context
  HttpServletRequest request;

  public HttpServletRequest getRequest() {
    return request;
  }

  @Context
  HttpHeaders httpHeaders;

  @HeaderParam("x-remote-user")
  String userName;

  public String getUserName() {
    LOG.info("xxx: " + getRequest().getHeader("x-remote-user"));
    LOG.info("userName: " + userName);
    LOG.info("getUserName2: " + getUserName2());
    LOG.info("getUserName3: " + getUserName3());
    return userName;
  }

  public String getUserName2() {
    return httpHeaders.getRequestHeader("x-remote-user").get(0);
  }

  public String getUserName3() {
    LOG.info("getUserName from class " + request.getHeader("x-remote-user"));
    return request.getHeader("x-remote-user");
  }

  @PrePersist
  void onPrePersist(TBusiness myEntity) {
    LOG.info("getUserName: " + userName);

    myEntity.createdBy = userName;
    myEntity.updatedBy = userName;
  }

}

JWT に切り替えて、Quarkus で JWT RBAC を使用することで回避できますか?

4

1 に答える 1