Dropwizard [0.9.2] 请求添加 Auth 信息

Dropwizard [0.9.2] request add Auth information

我正在尝试将 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());
    [...]
}

如果我用 logger 记录 name,我可以毫无问题地获取它,如何将它放入请求日志中?

根据 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));
}