这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天
GO本身自己写的包要调用的话 需要复制一份进入本身环境变量的文件 才可以识别到 或者直接在环境变量目录下进行 又或者可以通过 go mod 与go sum 进行识别
JWT
JWT(json web token),它并不是一个具体的技术实现,而更像是一种标准。
JWT规定了数据传输的结构,一串完整的JWT由三段落组成,每个段落用英文句号连接(.)连接,他们分别是:Header、Payload、Signature,所以,常规的JWT内容格式是这样的:AAA.BBB.CCC
针对前后端分离的项目,大多是通过 token 进行身份认证来进行交互,一种简单的创建 token 的方式 JWT。
组成部分#
一个 JWT 实际上就是一个字符串,它由三部分组成,头部、载荷与签名。前两部分需要经过 Base64 编码,后一部分通过前两部分 Base64 编码后再加密而成。
如果读者不理解上边的陈述,不要紧,下文会详细讲解。
头部(Header)
头部用于描述关于该 JWT 的最基本的信息,例如其类型以及签名所用的算法等,也可以被表示成一个 JSON 对象。例如:
Copy
{"typ":"JWT","alg":"HS256"}
在头部指明了签名算法是 HS256 算法。
经过 Base64 编码得到:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9(第一部分)。下文参考资料提供线上加密/解密网址,感兴趣的读者可以自己尝试。
载荷(playload)
载荷就是存放有效信息的地方。这些有效信息包含三个部分:
(1)标准中注册的声明(建议但不强制使用)
Copy
iss: jwt签发者
sub: jwt所面向的用户
aud: 接收jwt的一方
exp: jwt的过期时间,这个过期时间必须要大于签发时间
nbf: 定义在什么时间之前,该jwt都是不可用的.
iat: jwt的签发时间
jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击
(2)公共的声明
Copy
公共的声明可以添加任何的信息,一般添加用户的相关信息或其他业务需要的必要信息,但不建议添加敏感信息,因为该部分在客户端可解密。
参考引用:www.cnblogs.com/muchengqing… www.cnblogs.com/moonlightL/…