前言
之前文章简单介绍了如何运行 gin+vue 的前后端分离开源项目, 该项目是学习了 Gin 实践教程后结合 vue-element-admin 写的, 该教程讲得很详细, 适合入门 Gin. 本篇文章将介绍 gin+vue 的前后端分离开源项目中如何使用 gin-jwt 对 API 进行权限验证.
安装 gin-jwt
在 GOPATH 目录下运行
go get GitHub.com/appleboy/gin-jwt
初始化 jwt 中间件
gin-jwt 已经帮我们封装成中间件了, 我们只需要设置并实例化它就可以直接用了.
现在来看看项目中 middleware/myjwt/gin_jwt.go 文件:
总的就是调用 jwt.New 函数来实例化一个 jwt.GinJWTMiddleware
然后我们看下 jwt.GinJWTMiddleware 中定义的属性和方法
TokenLookup:token 检索模式, 用于提取 token, 默认值为
- header:Authorization
- .
SigningAlgorithm: 签名算法, 默认值为 HS256
Timeout:token 过期时间, 默认值为 time.Hour
TimeFunc: 测试或服务器在其他时区可设置该属性, 默认值为 time.Now
TokenHeadName:token 在请求头时的名称, 默认值为 Bearer
IdentityKey: 身份验证的 key 值, 默认值为 identity
Realm: 可以理解成该中间件的名称, 用于展示, 默认值为 gin jwt
CookieName:Cookie 名称, 默认值为 jwt
privKey: 私钥
pubKey: 公钥
Authenticator 函数: 根据登录信息对用户进行身份验证的回调函数
PayloadFunc 函数: 登录期间的回调的函数
IdentityHandler 函数: 解析并设置用户身份信息
Authorizator 函数: 接收用户信息并编写授权规则, 本项目的 API 权限控制就是通过该函数编写授权规则的
Unauthorized 函数: 处理不进行授权的逻辑
LoginResponse 函数: 完成登录后返回的信息, 用户可自定义返回数据, 默认返回
- {
- "code": http.StatusOK,
- "token": token,
- "expire": expire.Format(time.RFC3339)
- }
RefreshResponse 函数: 刷新 token 后返回的信息, 用户可自定义返回数据, 默认返回
- {
- "code": http.StatusOK,
- "token": token,
- "expire": expire.Format(time.RFC3339)
- }
到这里我们应该就知道如何使用这个中间件了.
使用中间件
实例化中间件后, 直接在路由组中使用该中间件就可以了
源码地址: https://github.com/Bingjian-Zhu/gin-vue
来源: https://www.cnblogs.com/FireworksEasyCool/p/11455834.html