【代码解析】代码解析之生成token(1)

发布时间:2024年01月01日

本篇文章主要解析上一篇:代码解析之登录(1)里的第8行代码调用 TokenUtils 类里的genToken

方法

https://blog.csdn.net/m0_67930426/article/details/135327553?spm=1001.2014.3001.5501

genToken方法代码如下:

 public static String genToken(String userId, String sign) {
        return JWT.create().withAudience(userId) 
                .withExpiresAt(DateUtil.offsetHour(new Date(), 2)) 
                .sign(Algorithm.HMAC256(sign)); 
    }

这段代码用于生成一个JWT, JWT的全称是 Json? Web??Token,它定义了一种紧凑,自包含的方式,用于在各方之间作为 Json 对象传递信息

?解析如下:

1.

public static String genToken(String userId, String sign) {

这一行代码定义了一个静态的公共方法,方法名为genToken ,它接收两个字符串参数,分别是 userId 和 sign, 该方法返回一个字符串,该字符串表示生成的 JWT

2.

? return JWT.create().withAudience(userId)?

生成 JWT:

使用JWT.create() 方法创建一个 JWT 实例

设置受众:

.withAudience(userId)?

将 userId 作为 JWT 的 受众 保存到 token 中,在 JWT中受众是一个字符串,表示接收此令牌的实体。在这里它将用户的 id 作为受众保存到 token ,以便后续验证该令牌时知道他是哪个用户生成的。

3.?

? .withExpiresAt(DateUtil.offsetHour(new Date(), 2))?

这行代码设置 JWT 过期的时间,它使用 DateUtil.offsetHour 方法,将当前时间(? new Date()? ?)? 往后偏移2小时,这意味着生成的JWT ,将在2小时后过期,这一步骤的作用是确保生成的令牌在一段时间内自动失效,从而提高安全性

4.?

? .sign(Algorithm.HMAC256(sign));?

这一行代码使用 HMAC256 算法,这是一种对称密钥加密算法,和提供的sign参数(密码或密钥)对JWT进行签名,这样做的目的是确保令牌的完整性和真实性,防止被篡改。

这个方法通常用于身份验证,授权场景,其中客户端(如web浏览器或者移动应用)需要凭据来访问受保护的资源和服务。一旦客户端获取到 JWT ,它就可以在随后的请求发送该令牌,以证明身份并请求访问受保护的资源或服务。服务器端可以验证这个令牌,确认客户端的身份,并据此授予相应的访问权限。?

文章来源:https://blog.csdn.net/m0_67930426/article/details/135328889
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。