如何从请求头获取JWT令牌

huangapple go评论144阅读模式
英文:

How to get JWT Token from RequestHeader

问题

[![在这里输入图片描述][1]][1]我试图从get请求的头部获取我的Bearer令牌如果我想要显示令牌那么就会返回NULL有人知道为什么我没有获得令牌吗
```java
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) {
        // 解析令牌。

        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
在我获得完整的头部输出后,我发现 "Authorization" 不可用。

{
    "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 用于令牌。有人有解决方案吗?我已经为这个错误困扰了几个小时。

英文:

如何从请求头获取JWT令牌I try to get my bearer token from the header of the getrequest. If I want to display the token, then NULL is returned. Does anyone have any idea why I don't get the token?

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);

UPDATE 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;
    }

UPDATE 2

		@GetMapping("/contacts/token")
			public String getToken(HttpServletRequest request) throws Exception
			{
			String user = request.getHeader(HEADER_STRING);
			System.out.println(user);
			return user;
			}

UPDATE 3
After I have had the complete header output, I see that "Authorization" is not available.

{
    "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": "*/*"
}

Therefore I will not be able to find the token there either. Is it maybe my dependencies? I only integrated the jjwt dependency for the token. Does anyone have a solution? Been sitting on this bug for several hours

答案1

得分: 1

你应该提供给我们你正在发送的请求,以便检查令牌是否已发送。
也许你可以尝试通过添加这个头部来接收它,像这样:

@RequestHeader("Authorization") String token
英文:

You should provide us the request you are sending to check if the token was send.
Maybe you can also try receiving it like this by adding this header

@RequestHeader("Authorization") String token

答案2

得分: 0

如果request是请求对象,则可以执行以下操作:

request.getHeader(HttpHeaders.AUTHORIZATION);
英文:

If request is the Request object, then you can do:

request.getHeader(HttpHeaders.AUTHORIZATION);

huangapple
  • 本文由 发表于 2020年7月27日 15:35:42
  • 转载请务必保留本文链接:https://go.coder-hub.com/63110697.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定