跳到主要内容
版本:2.8.x(Latest)

在本章中,我们需要完成用户的会话管理功能:

  • 登录;
  • 获取用户信息。

JWT 简介


HTTP 是一种无状态协议,这意味着每次请求都是独立的,没有上下文关系。这就需要一种机制来保存用户的状态信息,Cookie 就是其中一种解决方案。Cookie 是存储在用户浏览器中的小块数据,可以在后续请求中发送给服务器,用于保持会话状态。然而,Cookie 也有一些限制,例如跨域问题和安全性问题。相比之下,JWT 是一种更现代的解决方案,可以通过 HTTP 头部传递,无需依赖 Cookie,且具有更好的跨域支持和安全性。

JWT全名Json Web Token,其看起来是一串无序的字符串。由三部分组成:头部(Header)、负载(Payload)和签名(Signature)。

在前后端分离的项目中,用户登录后,服务端生成JWT并返回,客户端自行保存它,例如浏览器本地储存Local Storage。在后续的请求中,通常在Header头的Authorization字段中携带它,以完成用户身份认证。

安装 golang-jwt


生成验证JWT需要复杂的加密解密的逻辑,自己编写需费一番手脚。所幸的是,前人已经造好了轮子,直接安装调用即可。

$ go get -u github.com/golang-jwt/jwt/v5