【发布时间】:2021-10-09 15:47:28
【问题描述】:
我有一个 REST API(使用带有 microprofile-jwt 的 wildfly 20),所以我想使用 Hibernate Envers 审核更改。不幸的是,我无法获取我的 Principal 对象:javax.ws.rs.core.SecurityContext 为空。
所以我的问题是:如何在我的 RevisionListener 中注入 SecurityContext 并获取 Principal ?
import java.security.Principal;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.SecurityContext;
import org.hibernate.envers.RevisionListener;
public class CustomRevisionListener implements RevisionListener {
@Context
private SecurityContext context;
@Override
public void newRevision(Object o) {
CustomRevEntity e = (CustomRevEntity) o;
e.setLogin(getUser());
}
private String getUser() {
if(context == null) return "anonymous no context";
Principal principal = context.getUserPrincipal();
return principal == null ? "anonymous" : principal.getName();
}
}
【问题讨论】:
标签: rest hibernate-envers java-ee-8 microprofile security-context