【发布时间】:2020-07-27 07:35:42
【问题描述】:
我尝试从 getrequest 的标头中获取我的不记名令牌。如果我想显示令牌,则返回 NULL。有谁知道为什么我没有得到令牌?
public String sendSmsToCustomer(HttpServletRequest request, @PathVariable("name") String name,@PathVariable("customer_phone_number") String customer_phone_number, @PathVariable("text") String text) throws Exception
{
String user = request.getHeader("Authorization");
System.out.println(user);
更新 1
public static String getUsernameFromToken(HttpServletRequest request) {
String token = request.getHeader(HEADER_STRING);
String user = null;
if (token != null) {
// parse the token.
try {
user = Jwts.parser()
.setSigningKey(SECRET)
.parseClaimsJws(token.replace(TOKEN_PREFIX, ""))
.getBody()
.getSubject();
} catch (Exception e) {
throw e;
}
return user;
}
else
return null;
}
更新 2
@GetMapping("/contacts/token")
public String getToken(HttpServletRequest request) throws Exception
{
String user = request.getHeader(HEADER_STRING);
System.out.println(user);
return user;
}
更新 3 获得完整的标头输出后,我看到“授权”不可用。
{
"x-forwarded-host": "localhost:8800",
"x-forwarded-proto": "http",
"x-forwarded-prefix": "/contacts",
"postman-token": "081ea72c-e270-46db-8703-e5afc9887ba1",
"host": "localhost:8100",
"x-forwarded-port": "8800",
"content-type": "application/json",
"connection": "Keep-Alive",
"x-forwarded-for": "0:0:0:0:0:0:0:1",
"accept-encoding": "gzip, deflate, br",
"user-agent": "PostmanRuntime/7.26.2",
"accept": "*/*"
}
因此我也无法在那里找到令牌。也许是我的依赖?我只集成了令牌的 jjwt 依赖项。有没有人有办法解决吗?在这个 bug 上坐了几个小时
【问题讨论】:
-
你能提供发送到服务器的请求吗?也许令牌不在里面?尝试使用 Postman 或 junit 测试之类的东西,您将能够更轻松地重现此行为
-
我已经与邮递员合作并且所有请求都有效,现在我想安装一个令牌增强器,为此我必须获得令牌
-
所有请求工作是什么意思?你能得到除此之外的其他请求的标头吗?
-
对于所有其他请求,我不需要令牌。所以他们正在工作,我可以用令牌抛出 api 网关。
-
您是否尝试过隔离问题?例如,您是否能够获得不带其他参数的方法的令牌?也许您启用了具有副作用的安全参数......我已经能够像您一样在标题“授权”中获得一个令牌,它对我来说效果很好。所以尝试隔离问题
标签: java spring-boot http-headers