open-resty 服务安装jwt插件

devtools/2024/9/29 15:23:14/

作者:程序那点事儿 日期:2023/11/16 22:07


lua-resty-jwt 插件

如果想使用Lua识别用户令牌,我们需要引入lua-resty-jwt模块,是用于 ngx_lua 和 LuaJIT 的 Lua 实现库,在该模块能实现Jwt令牌生成、Jwt令牌校验。

下载好了该依赖库lua-resty-jwt-master.zip,我们将该库文件上传到服务器上,并解压,当然,我们也可以使用opm直接安装lua-resty-jwt

解压安装方式参考上面安装lua-resty-kafka,我们现在使用opm的安装方式

  1. yum install yum-utils #安装仓库管理工具包
  2. yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo #添加仓库地址
  3. yum install openresty-resty #安装resty
  4. yum install openresty-opm #安装opm
  5. opm get SkyLothar/lua-resty-jwt #安装Jwt组件
  6. 如果已经安装好OpenResty,跳过第2、3步(建议使用这种方式,如果代码clone不下来)。

添加一个案例访问

在前面kafka的案例中,我们已经创建了lua目录,现在我们就进入到lua目录开始。

  1. vim token.lua #封装一个token.lua脚本,以便复用
--识别令牌
--依赖resty.jwt库
local jwt = require "resty.jwt"--定义一个模块
local jwttoken = {}--秘钥
local secret = "5pil6aOO5YaN576O5Lmf5q+U5LiN5LiK5bCP6ZuF55qE56yR"function jwttoken.check(auth_header)--响应信息local response = {}--令牌是否为空if auth_header == nil thenresponse["code"] = 401response["message"] = "请登录"return responseend--判断令牌格式 Bearer ,正确还要去掉Bearer local _,_,token = string.find(auth_header, "Bearer%s+(.+)")if token == nil thenresponse["code"] = 402response["message"] = "令牌无效"return responseend--校验令牌是否正确local jwt_obj = jwt:verify(secret,token)if jwt_obj.verified == false thenresponse["code"] = 403response["message"] = "令牌无效"return responseend--响应正确信息response["code"] = 200response["message"] = "令牌有效"response["body"] = jwt_objreturn response
end
return jwttoken
  1. vim auth_verify.lua #创建auth_verify.lua脚本(对外访问)
--判断测试令牌是否有效
--设置编码utf8
ngx.header.content_type="application/json;charset=utf8"--引入cjson库
local cjson = require "cjson"
--引入token库
local jwttoken = require "token"--获取令牌(请求头中获取令牌)
local auth_header = ngx.var.http_Authorization--调用token的check方法
local result = jwttoken.check(auth_header)--将结果响应给客户端
ngx.say(cjson.encode(result))
  1. vim ../conf/nginx.conf #添加配置
    #lua插件位置lua_package_path "/usr/local/openresty/nginx/lua/?.lua;/usr/local/openresty/modules/kafka/lib/?.lua;;";server {listen       80;server_name  localhost;location /token {content_by_lua_file /usr/local/openresty/nginx/lua/auth_verify.lua;}

本项目中自己写的lua脚本在/usr/local/openresty/nginx/lua/目录下,因为我们在该目录下写了两个lua脚本:auth_verify.lua,token.lua,在auth_verify.lua中引入了token.lua模块,所以别忘了在nginx.conf文件中添加如下配置,不然会报如下错误:

  1. nginx -s reload #重启ningx
  2. http://192.168.10.100/token #访问测试,结果如下


http://www.ppmy.cn/devtools/118749.html

相关文章

前端大模型入门:使用Transformers.js手搓纯网页版RAG(二)- qwen1.5-0.5B - 纯前端不调接口

书接上文,本文完了RAG的后半部分,在浏览器运行qwen1.5-0.5B实现了增强搜索全流程。但受限于浏览器和模型性能,仅适合于研究、离线和高隐私场景,但对前端小伙伴来说大模型也不是那么遥不可及了,附带全部代码&#xff0c…

Cesium笔记 canvas定制billboard

Cesium 中label时,想要设置text的背景图片时,label没有backgroundimage属性。 如果使用labelbillboard 的方式设置,会存在文本长短不一时,图片不能自适应等问题。 const showLabelFun (dataMcInfo, backgroundcolor) > {var…

基于Next.js和TailwindCss的TailwindCss

最近在研究 Next.js 和 TailwindCss ,这两天没事的时候就搞了一个 c。 目前工具部署在 Vercel ,欢迎各位体验(能提出意见更好嘿嘿) 体验地址: https://icon.999872.xyz/ 图片预览 👇

IOS-IPA签名工具 request_post 任意文件读取复现

0x01 产品描述: 苹果手机中的IPA是指iOS应用程序(iPhone应用程序)的安装包文件,其文件扩展名为.ipa。IPA文件是经过编译的、已签名的应用程序文件,可以在iOS设备上安装和运行。通常,开发者通过Xcode等开发工…

alpine安装docker踩坑记

文章目录 前言错误场景正确操作最后 前言 你好,我是醉墨居士,最近使用alpine操作系统上docker遇到了一些错误,尝试解决之后就准备输出一篇博客,帮助有需要的后人能够少踩坑,因为淋过雨所以想给别人撑伞 错误场景 我…

MATLAB编写的RSSI在三维空间上的定位程序,锚点数量无限制(可自定义),带中文注释

文章目录 程序说明功能概述环境设置结果可视化函数定义运行结果程序获取 程序说明 功能概述 该程序实现了在三维空间中通过接收信号强度指示(RSSI)进行定位的功能。利用多个锚节点的信号强度测量,估计未知点的位置。该程序适用于无线定位应…

《深度学习》卷积神经网络 使用最优模型、调整学习率 用法解析及案例实现

目录 一、使用最优模型 1、什么是最优模型 2、如实使用最优模型 1)读取参数方法 2)调用完整模型方法 3)实例 完整代码: 打印结果: 二、调整学习率 1、什么是调整学习率 2、目的 3、调整学习率的方法 1&am…

前端文件上传全过程

特别说明:ui框架使用的是蚂蚁的antd 这里主要是学习前端上传接口的传递参数包括前端上传之前对于代码的整理 一、第一步将前端页面画出来 源代码: /** 费用管理 - IT费用管理 - 费用数据上传 */ import { useState } from "react"; import {…