1.Bearer头部:好处在于可以让请求方和服务方都快速而准确地识别Token的传递方式,使得身份验证更加规范化和通用化,便于开发和维护。但并没有更安全,且具体使用须前后一致。
2.带Bearer头部的生成和解密如下:
public String createTokenByBao(String userId) {
Date date = new Date();
String token = Jwts.builder()
.setSubject(userId)
.setIssuedAt(date)
.setExpiration(new Date(System.currentTimeMillis() + expireTime * 60 * 1000))
.signWith(SignatureAlgorithm.HS256, secret)
.compact();
return "Bearer " + token; // 添加Bearer前缀
}
public Integer getUserIdFromToken(String token) {
try {
Claims claims = Jwts.parser()
.setSigningKey(LOGIN_TOKEN_SECRET) // 使用相同的签名密钥
.parseClaimsJws(token.replace("Bearer ", "")) // 将Token字符串中的Bearer前缀移除,然后将去除Bearer前缀的Token字符串作为参数传递给 .parseClaimsJws()
方法
.getBody();
// 提取openid或其他用户ID字段
return new Integer(claims.getSubject());
} catch (JwtException e) {
// JWT验证异常,令牌无效
return null; // 可以根据实际需求返回特定的错误标识或抛出自定义异常
}
}
3.使用以上方式生成的token样式:
Bearer <JWT Token>
Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE1MTYyMzkxMjJ9.Tp6vv-w3fSbJ3vYPnDpC2ucHtUzFZKKQ5HG4BeZMK5c (仅示例)
标签:return,Bearer,--,token,Token,new,String From: https://www.cnblogs.com/baoguiying/p/17843608.html