gpt4 book ai didi

java - 如何访问 HTTP Basic 用户名?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:51:50 25 4
gpt4 key购买 nike

我正在使用这个 ContainerRequestFilter 来检查 HTTP Basic 凭据。

private class Filter implements ResourceFilter, ContainerRequestFilter {

@Override
public ContainerRequest filter(ContainerRequest request) {
String auth = request.getHeaderValue("Authorization");

if (auth == null || !auth.startsWith("Basic ")) {
throw new NotAuthorizedException("FAILED\n");
}

auth = Base64.base64Decode(auth.substring("Basic ".length()));
String[] vals = auth.split(":");
String username = vals[0];
String password = vals[1];

boolean validUser = database.Users.validate(username, password);

if (!validUser) {
throw new NotAuthorizedException("FAILED\n");
}

return request;
}

...

}

所以当我到达这一点时,我已经对用户进行了身份验证。现在如何获取用户名?

@GET
@Path("some_kind_of_report_or_something")
@Produces(MediaType.TEXT_PLAIN)
public String fetchAReportOrSomething() {
// At this point, I know that the user has provided good credentials,
// now I need get the user's username as a String
String username = ???;
}

我想我可以使用 HttpContext.getRequest() 并执行与 AuthFilter 中相同的操作(我会将用户名/密码提取逻辑移到它自己的方法中)。在过滤器中,我能否以某种方式将提取的用户名存储在请求对象中的某处,以便将其传递给此处理程序?

(顺便说一句,有没有比我在过滤器中所做的更好的提取用户名和密码的方法?如果有,请在评论中告诉我。)

最佳答案

关于java - 如何访问 HTTP Basic 用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13616963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com