一 模块地址
(1)插件安装
+++++++++++++"安装方式"+++++++++++++1.opm安装 -->'默认'安装的位置opm get SkyLothar/lua-resty-jwt2.源码安装,进行copy -->'不建议'

参考博客
网关权限控制
(2)常用方法介绍
① sign
功能: 生成'jwt token'备注: 无法设置'token的有效期',仅仅'作为测试'说明: 可以通过'高级语言'的代码在生成'token'设置'expire、issuers'变相: openresty 的jwt插件并没有提供'时间过期'的校验,可以通过将'token'存到cookies中变相的增加'生命时间'

② verify
核心:关注'成功'和'失败'的jwt_obj


③ claim_spec常用选项
说明:该选项是一个'lua table'

④ sign-jwe

二 实现

需求: 验证通过,允许用户'查询数据',暂时不涉及'openresty的请求阶段的access'
(1) 安装jwt插件


(2)lua高效实现
① 生成token

备注:生产最好存储在'localStorage'本地存储中
② 进行token校验

1)成功

2)key密钥错误导致失败

说明:获取最好是payload字段
3)token过期导致失败
说明: '30s'有效期注意: '时间'的问题 -->'差8h'

4)base编码问题

Django时间Field与datetime与time解读
Django - 日期、时间字段
(3)生产场景使用

① check.lua 模块


② nginx.conf配置
# openresty作为各种service的api网关location /service1 {# 核心是-->access_by_luaaccess_by_lua 'local jwt = require("lua.check")jwt.auth()';default_type application/json;proxy_pass http://tomcat;
}
③ 关键字与状态码
ngx.OK, -->"200"ngx.ERROR, -->"500"ngx.HTTP_NOT_FOUND, -->"404"ngx.HTTP_MOVED_TEMPORARILY -->"302"ngx.HTTP_UNAUTHORIZED -->"401"++++++++++++++++++"其它方式"++++++++++++++++++return 401 "认证不通过"ngx.status = 401
openresty找不到静态文件
Java实现token的生成与验证-登录功能
③④⑤⑥


















