我正在尝试将userId或用户名添加到http请求日志中,第二个字段似乎是我想要设置的字段。
阅读Jetty源Jetty source,我发现了这个
getUserPrincipal().getName()
但我从来没有得到我的用户的名字。我知道我错过了一些东西,但不知道是什么。
如果可以提供帮助,可以使用
public class MyUser implements Principal {
private Long id;
private String name;
public String getName() {
if (name == null || name.isEmpty())
return getIdAsString();
return name;
}
public String getIdAsString() {
return Long.toString(id, 16);
}
}
进入我的资源
@POST
@Path("/test/")
public int test(
@Auth @ApiParam(hidden = true) Principal user, ...)
{
logger.error(user.getName());
[...]
}
如果我使用记录器记录name
我没有问题,如何将它放入请求日志中?
答案 0 :(得分:0)
根据zloster的建议,我将UserAuthentication
注入我的AuthFilter
Request request = HttpChannel.getCurrentHttpChannel().getRequest();
if (request != null) {
Principal user = new Principal() {
@Override
public String getName() {
MyUser user = (MyUser) principal.get();
return user.getIdAsString();
}
};
UserIdentity userId = new DefaultUserIdentity(null, user, null);
request.setAuthentication(new UserAuthentication(null, userId));
}