安裝openresty使用nginx+lua,openresty使用jwt解密

yum install -y epel-release
yum update
yum search openresty  # 查看是否有可用包
yum install -y openresty啟動systemctl start openresty驗證服務狀態systemctl status openresty設置開機自啟systemctl enable openrestysystemctl stop openresty      # 停止服務
systemctl restart openresty   # 重啟服務
systemctl reload openresty    # 重載配置(無需重啟服務)

使用
nginx配置文件

location / {root   html;index  index.html index.htm;//直接使用//content_by_lua_block {//    ngx.say("Hello, OpenResty!")//	  ngx.var.uri獲得請求地址//     ngx.say("Request URI: ", ngx.var.uri)// }//lua文件content_by_lua_file "/usr/local/openresty/nginx/conf/lua/app.lua";
}

app.lua

-- 獲取請求參數
local args = ngx.req.get_uri_args()
-- 設置響應頭
ngx.header.content_type = "application/json; charset=utf-8"ngx.say('{"code":2006,"data":[],"message":"請求成功"}')

使用解密

安裝
yum install openresty-opm 
安裝
opm get SkyLothar/lua-resty-jwt引入
local jwt = require("resty.jwt")
使用
local secret = "wbrj"  -- JWT簽名密鑰
local jwt_obj = jwt:verify(secret, headers["token"])

完整案例app.lua文件

-- 獲取請求參數
local args = ngx.req.get_uri_args()
-- 設置響應頭
ngx.header.content_type = "application/json; charset=utf-8"-- 引入JSON編碼庫
local cjson = require("cjson")local uri = ngx.var.uri-- 定義不需要攔截的路徑數組
local whitelist = {"/main/admin/login","/main/admin/wbUrl", --App綁定域名"/main/accset/select", --獲得套賬數"/main/accset/select", --獲得套賬數"/wbrjPys/accset/select",--獲得套賬數"/wbrjPys/static" -- 靜態文件
}
-- 檢查URI是否在白名單中
local in_whitelist = false
for _, path in ipairs(whitelist) doif string.find(uri, path) thenin_whitelist = truebreakend
end
-- 如果在白名單中,直接放行
if in_whitelist thenreturn
end-- 獲取所有請求頭信息
local headers = ngx.req.get_headers()-- 使用Lua表構建響應數據,code是2006
local response = {code = 2001,data = {},message = "簽權失敗",uri = headers['token']
}
local jwt = require("resty.jwt")-- 檢查請求頭中是否存在token字段
if headers["token"] and headers["token"] ~= "" then-- 使用示例local secret = "dade"  -- JWT簽名密鑰local jwt_obj = jwt:verify(secret, headers["token"])response['valid'] = jwt_objngx.say(cjson.encode(response))
else--自動編碼為JSON字符串,自動處理轉義ngx.say(cjson.encode(response))
end

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/82231.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82231.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/82231.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

全球化 2.0 | 云軸科技ZStack助力中東智慧城市高性能智能安防云平臺

在全球智慧城市加速建設的背景下,中東某大型城市通過部署云軸科技ZStack Cloud云平臺,成功實現公共安全視頻監控系統(CCTV)的智能化升級。該平臺以彈性計算、GPU智能調度、高可用架構為核心,支撐千路高清視頻流處理及人…

Day35打卡 @浙大疏錦行

知識點回顧: 三種不同的模型可視化方法:推薦torchinfo打印summary權重分布可視化進度條功能:手動和自動寫法,讓打印結果更加美觀推理的寫法:評估模式 作業:調整模型定義時的超參數,對比下效果。…

嵌入式軟件-如何做好一份技術文檔?

嵌入式軟件-如何做好一份技術文檔? 文章目錄 嵌入式軟件-如何做好一份技術文檔?一.技術文檔的核心價值與挑戰二.文檔體系的結構化設計三.精準表達嵌入式特有概念四. **像管理代碼一樣管理文檔**,代碼與文檔的協同維護五.質量評估與持續改進5.…

css五邊形

五邊形 .fu{width: 172rpx;height: 204rpx;overflow: hidden;border-radius: 10rpx;clip-path: polygon(0% 0%, 100% 0%, 100% 75%, 50% 100%, 0% 75%, 0% 25%); }六邊形 clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);

【Java高階面經:微服務篇】1.微服務架構核心:服務注冊與發現之AP vs CP選型全攻略

一、CAP理論在服務注冊與發現中的落地實踐 1.1 CAP三要素的技術權衡 要素AP模型實現CP模型實現一致性最終一致性(Eureka通過異步復制實現)強一致性(ZooKeeper通過ZAB協議保證)可用性服務節點可獨立響應(支持分區存活)分區期間無法保證寫操作(需多數節點可用)分區容錯性…

頭歌軟工導論作業

一.集成測試和確認測試 第1關:集成測試 1、 集成測試的主要方法有CD A、 自頂向下集成方法 B、 自底向上集成方法 C、 漸增式測試方法 D、 非漸增式測試方法 2、 目前在進行集成測試時普遍采用非漸增式測試方法。B A、 √ B、 3、 自底向上集成策略是從主控制模…

MFC:獲取所有打印機的名稱(打印機模塊-1)

背景: 在一個 MFC 應用程序中,列出本地系統中安裝的打印機,并檢測是否存在“Microsoft Print to PDF”或“Microsoft XPS Document Writer”虛擬打印機。如果有,則選擇其中一個作為默認或后續操作對象;如果沒有&#…

設計模式-行為型模式(詳解)

模板方法 模板方法模式,它在一個抽象類中定義了一個算法(業務邏輯)的骨架,具體步驟的實現由子類提供,它通過將算法的不變部分放在抽象類中,可變部分放在子類中,達到代碼復用和擴展的目的。 復用: 所有子類可以直接復…

STM32中的IIC協議和OLED顯示屏

串口通信協議的缺點 串口通信通常需要至少三條線(TX、RX和GND),而 I2C 總線僅需要兩條信號線(SDA和SCL); 串口通信僅支持一對一通信,而 I2C 總線支持多機通信,允許單個主機與多個從…

30個性能優化方案

1.用String.format拼接字符串 不知道你有沒有拼接過字符串,特別是那種有多個參數,字符串比較長的情況。 比如現在有個需求:要用get請求調用第三方接口,url后需要拼接多個參數。 以前我們的請求地址是這樣拼接的: S…

docker中部署Universal Media Server (UMS)

Universal Media Server (UMS) 本身主要是作為桌面服務程序開發的(主要面向 Java GUI DLNA 播放),但確實可以通過 Docker 進行部署。雖然官方沒有提供 Docker 鏡像,但社區有一些可用的方式可以在 Docker 中運行它。 下面是一個可…

配置文件,xml,json,yaml,我該選哪個?

文章目錄 一、核心特性對比二、性能與生態系統三、適用場景與選型建議四、替代方案與趨勢五、總結 在軟件開發中,配置文件格式的選擇直接影響開發效率和維護成本。XML、JSON、YAML 是目前主流的三種格式,但它們各有適用場景和局限性。本文將從語法特性、…

產品迭代與放棄的判斷:MVP、PMF 與 Scale Fit 的三重驗證

在創業和產品管理的世界里,一個永恒的難題是:什么時候應該繼續投入資源進行產品迭代?什么時候又該果斷放棄? 這是一個既關乎戰略方向,又涉及資源分配的核心命題。許多初創公司或產品團隊往往在錯誤的方向上堅持太久&a…

DAY 35 模型可視化與推理

知識點回顧: 三種不同的模型可視化方法:推薦torchinfo打印summary權重分布可視化進度條功能:手動和自動寫法,讓打印結果更加美觀推理的寫法:評估模式 作業:調整模型定義時的超參數,對比下效果。…

20250523-BUG-E1696:無法打開元數據文件“platform.winmd(已解決)

BUG:E1696:無法打開元數據文件“platform.winmd(已解決) 最近在用VisualStudio2022打開一個VisualStudio2017的C老項目后報了這個錯,幾經周折終于解決了,以下是我用的解決方法: 將Debug從Win32改…

Hellorobot 移動操作機器人開源實踐:HPR 模型 + 全棧資源,降低家庭機器人開發門檻

Hellorobot在DobbE框架中扮演了重要的技術支柱角色。通過其尖端的模塊化設計和高效算法優化,Hellorobot為家庭機器人領域注入了強大的創新動力。DobbE框架的核心技術——Home Pretrained Representations (HPR) 模型,得益于Hellorobot的技術支持&#xf…

onnx模型轉入rknn3399平臺上工作記錄

1.rknn虛擬環境使用時報錯問題 使用rknn17環境的報錯: ImportError: libdc1394.so.22: cannot open shared object file: No such file or directory 參考鏈接:https://blog.csdn.net/2301_80032564/article/details/142316410 創作軟連接: …

杰發科技AC7840——CSE硬件加密模塊使用(1)

1. 簡介 2. 功能概述 3. 簡單的代碼分析 測試第二個代碼例程 初始化隨機數 這里的CSE_CMD_RND在FuncID中體現了 CSE_SECRET_KEY在17個用戶KEY中體現 最后的讀取RNG值,可以看出計算結果在PRAM中。 總的來看 和示例說明一樣,CSE 初次使用,添加…

AI要掌握的知識

AI(人工智能)是一個跨學科的復雜領域,其知識體系涵蓋理論基礎、技術工具和實踐應用等多個層面。以下從核心知識模塊、技術工具、實踐方向等角度,詳細梳理 AI 從業者需要掌握的知識體系: 一、數學基礎:AI 的…

Python Click庫:輕松構建優雅的命令行工具

Python Click庫:輕松構建優雅的命令行工具 引言一、Click 適用場景二、安裝 Click三、基礎使用1. 第一個 Click 程序2. 添加位置參數3. 使用選項參數 四、高級功能1. 子命令分組(多級命令)2. 參數類型驗證3. 彩色終端輸出 五、實用功能示例&a…