Lua识别Jwt令牌业务

2023-05-16

文章目录

    • 业务场景
    • 业务实现
      • lua-resty-jwt安装
      • 令牌识别
      • 令牌测试

业务场景

如果想使用Lua识别用户令牌,我们需要引入lua-resty-jwt模块,是用于 ngx_lua 和 LuaJIT 的 Lua 实现库,在该模块能实现Jwt令牌生成、Jwt令牌校验,依赖库的地址:https://github.com/SkyLothar/lua-resty-jwt

业务实现

lua-resty-jwt安装

​ 在资料\lua中已经下载好了该依赖库lua-resty-jwt-master.zip,我们将该库文件上传到服务器上,并解压,当然,我们也可以使用opm直接安装lua-resty-jwt,配置lua-resty-jwt之前,我们需要先安装resty和opm。

安装仓库管理工具包:

yum install yum-utils

添加仓库地址:

yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo

安装resty:

yum install openresty-resty

安装opm:

yum install openresty-opm

安装Jwt组件:

opm get SkyLothar/lua-resty-jwt

此时lua-resty-jwt安装好了,可以直接使用了。

令牌识别

令牌识别有可能在很多操作都需要用到,所以我们可以创建一个独立的模块,用于识别令牌,文件名字叫token.lua

--依赖jwt库
local jwt = require("resty.jwt")
--秘钥
local secret="5pil6aOO5YaN576O5Lmf5q+U5LiN5LiK5bCP6ZuF55qE56yR"

-- 定义一个名为 jwttoken 的模块
jwttoken = {}

--令牌校验
function jwttoken.check(auth_header)
    --定义响应数据
    local response = {}

    --如果请求头中没有令牌,则直接返回401
    if auth_header == nil then
        response["code"]=401
        response["message"]="没有找到令牌数据"
        return response
    end

    --查找令牌中的Bearer前缀字符,并进行截取
    local _, _, token = string.find(auth_header, "Bearer%s+(.+)")

    --如果没有Bearer,则表示令牌无效
    if token == nil then
        response["code"]=401
        response["message"]="令牌格式不正确"
        return response
    end

    --校验令牌
    local jwt_obj = jwt:verify(secret, token)

    --如果校验结果中的verified==false,则表示令牌无效
    if jwt_obj.verified == false then
        response["code"]=401
        response["message"]="令牌无效"
        return response
    end

    --全部校验完成后,说明令牌有效,返回令牌数据
    response["code"]=200
    response["message"]="令牌校验通过"
    response["body"]=jwt_obj
    return response
end

return jwttoken

我们创建一个auth_verify.lua用于识别令牌,代码如下:

ngx.header.content_type="application/json;charset=utf8"

--引入json库
local cjson = require "cjson"

--引入jwt模块
local jwttoken = require "token"

--获取请求头中的令牌数据
local auth_header = ngx.var.http_Authorization

--调用令牌校验
local result = jwttoken.check(auth_header)

-- 输出结果
ngx.say(cjson.encode(result))
ngx.exit(result.code)

nginx.conf配置一个用于校验令牌的地址,代码如下:

#令牌校验
location /token {
    content_by_lua_file /usr/local/openresty/nginx/lua/auth_verify.lua;
}

令牌测试

我们用上面java生成的令牌进行测试,请求:http://192.168.211.137/token测试令牌结果,如下图:

在这里插入图片描述

令牌错误输入,结果如下:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Lua识别Jwt令牌业务 的相关文章

  • 填充 AspNetUserLogins 和 AspNetUserTokens

    我已经尝试了很多来自互联网的例子 例如first https stackoverflow com a 45901894 2725524 second https logcorner com token based authenticatio
  • Cookie 是否可以保护令牌免受 XSS 攻击? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在为基于浏览器的 Javascript Web 应用程序构建基于 JWT JSON Web 令牌 的身份验证机制 使用无状态服务器
  • 使用 v2.0 端点的声明中缺少 UPN

    我已经设置了一个类似于 Microsoft 的以下示例的项目 其中我有一个本机应用程序请求使用 v2 0 端点访问 Web api https github com azureadquickstarts appmodelv2 nativec
  • 使用 JWT 缺少授权标头

    我正在尝试设置 JSON Web 令牌以从移动应用程序与我的 php 后端进行通信 我可以请求一个令牌就好了 当我需要验证它 或向另一个端点发出请求 时 我使用以下格式设置授权标头 Bearer
  • 收到“错误”:“未知的身份验证策略\“jwt \””

    我正在使用 Express Mongoose Passport 和 JWT 实现授权功能 我可以正常注册用户 我能够验证并生成 JWT 我可以在 JWT 站点上解析它 但由于某种原因 我收到未知的身份验证策略错误消息 我将所有代码块放在 P
  • Redis 排序集和解决关系

    我正在使用 Redis 排序集来存储我正在处理的项目的排名 我们没有预料到 我们想要如何处理关系 Redis 按字典顺序对具有相同分数的条目进行排序 但我们想要做的是对具有相同分数的所有条目给予相同的排名 例如在以下情况 redis 127
  • lua http套接字超时

    LuaSocket HTTP 模块文档说可以在 HTTP 连接上设置超时 可以设置以下常量来控制 HTTP 模块的默认行为 PORT 用于连接的默认端口 PROXY 用于连接的默认代理 TIMEOUT 设置所有I O操作的超时时间 USER
  • Lua-迭代嵌套表

    我已经学习 Lua 几个星期了 这一次又一次成为我的症结所在 我尝试阅读有关该主题的帖子和书籍 我使用 Lua 查询软件监控系统 Nimsoft 我的数据以表格形式返回给我 我不会发布整个输出 但这里有一个我认为可以描述结构的片段 表参考是
  • 什么时候适合使用Lua这样的嵌入式脚本语言

    我玩 魔兽世界 大约有两年了 我对用来编写插件的 Lua 很好奇 由于到目前为止我读到的有关 Lua 的内容都是 快 轻 和 这太棒了 所以我想知道如何以及何时使用它 您需要在系统中嵌入像 Lua 这样的脚本语言的典型情况是什么 当您需要最
  • Kong - 验证上游 ssl(ssl_proxy 打开)

    我已经成功为 API 安装了 kong 网关 该 API 通过上游负载平衡到多个目标 应用程序服务器 现在 我有一个我的应用程序服务器的自签名证书 kong 和目标之间的 ssl 握手应该失败 我推断 kong 不验证上游证书 经过一些研究
  • 从 Google Chat POST 请求验证 JWT

    我有一个 NodeJS 机器人使用 HTTPs 端点连接到 Google Chat 我正在使用快递来接收请求 我需要验证所有请求是否都来自 Google 并且希望使用 Google 随请求发送的不记名令牌来执行此操作 我的问题是我正在努力寻
  • 如何在Conky中实现一个基本的Lua功能?

    我正在尝试向我的 Conky 添加一个函数 该函数打印字符串的长度以用于调试目的 代码位于名为的文件内test lua 非常简单 function test word return string len word end 我这样加载它 在我
  • 确定已编译Lua的编译器版本

    我有一些已编译的 LuaQ 我需要确定用于编译它的确切版本 有什么可能的方法吗 编译的脚本在文件开头有一个标头 4 bytes signature x1bLua 1 byte version 0x51 1 byte format 1 byt
  • 使用 FastCGI 运行 Lua 脚本

    我目前正在尝试找出使用 FastCGI 与 lighttpd 或 Nginx 一起运行 Lua 脚本的方法 我唯一能挖到的是WSAPI http keplerproject github com wsapi 开普勒计划的一部分 但我想知道是
  • Lua中如何在另一个表的表成员中搜索

    我正在编写一个 lua 程序 它有一个表 该表是另一个表的成员 当我向该成员表添加新日期时 一切正常 但是 当我想在该表中搜索时 无论我给出什么键 我总是会将最后一行添加到表中 如何在该成员表中正确搜索 Stream name functi
  • 去掉尾随零和小数点

    使用 Lua 我将数字格式化为可变位数并去掉尾随零 小数点 例如 string format precision f value gsub 0 1 gsub 值的类型为数字 正数 负数 整数 小数 所以任务已经解决了 但出于美学 教育和性能
  • 在 ASP.NET Core 中的 Swagger 中使用 JWT(授权:Bearer)

    我正在 ASP NET Core 1 0 中创建 REST api 我之前使用 Swagger 进行测试 但现在我为某些路由添加了 JWT 授权 和UseJwtBearerAuthentication 是否可以修改 Swagger 请求的标
  • 无法加载文件或程序集“Microsoft.IdentityModel.Tokens,版本=5.2.0.0”

    我正在尝试使用 VS 2015 将 OWIN JWT 添加到 webapi 项目中 参考显示Microsoft Owin Security Jwt Version 4 0 0 0 and Microsoft IdentityModel To
  • 在浏览器上验证 JWT

    我一直在读关于JWT https jwt io 我知道它分为三个部分 即header payload and signature 我将哈希算法保留在标头中 将基本信息保留在有效负载中例如 姓名 年龄 职务 有效期等在有效负载中 然后这两个都
  • 无法使用 ASP.NET Core 从 JWT 令牌获取声明

    我正在尝试使用 ASP NET Core 实现 JWT 持有者身份验证的非常简单的实现 我从控制器返回的响应有点像这样 var identity new ClaimsIdentity identity AddClaim new Claim

随机推荐

  • ROS-创建工作空间与功能包

    这里写目录标题 一 工作空间的组成与结构二 创建工作空间三 创建功能包四 设置环境变量五 功能包的package xml文件和CMakeLists txt文件 一 工作空间的组成与结构 工作空间的组成 xff1a src用于存放功能包源码
  • 「NeurIPS 2020」基于局部子图的图元学习

    点击蓝字 xff0c 设为星标 NeurIPS 2020 的接收论文 Graph Meta Learning via Local Subgraphs xff0c G META 是第一个使用局部子图来进行元学习的模型 Graph Meta L
  • Keras:Input()函数

    目录 1 Keras Input 函数 2 函数定义 xff1a 3 参数解释 4 例子 1 Keras Input 函数 作用 xff1a 初始化深度学习网络输入层的tensor 返回值 xff1a 一个tensor 2 函数定义 xff
  • JDBC入门笔记

    目录 1 xff0c JDBC概述 1 1 JDBC概念 2 xff0c JDBC快速入门 Java操作数据库的流程 2 1 编写代码步骤 3 JDBC API详解 3 1 DriverManager 3 2 Connection 3 2
  • 对抗样本入门详解

    文章目录 对抗样本基本原理对抗样本的发生对抗样本防御难在哪里对抗训练隐藏梯度defensive distillation 对抗样本的生成对抗样本生成方法介绍利用GAN生成对抗样本利用FGSM生成对抗样本代码复现 xff08 基于mnist
  • white/black-box attack(黑盒白盒攻击基础)

    基本概念 攻击方法分类标准 xff1a 假正性攻击 false positive 与伪负性攻击 false negative 假正性攻击 xff1a 原本是错误的但被被攻击模型识别为正例的攻击 eg 一张人类不可识别的图像 xff0c 被D
  • KL散度公式详解

    目录 文章目录 Jensen 39 s inequality讲解KL散度 xff08 又名relative entropy xff09 mutual information Jensen s inequality f x
  • 元学习算法MAML论文详解

    论文信息 题目 xff1a Model Agnostic Meta Learning for Fast Adaptation of Deep Networks 作者 xff1a Chelsea Finn 伯克利大学 xff0c Pieter
  • PINN内嵌物理知识神经网络入门及文献总结

    喜欢可点赞关注 xff0c 并收藏 xff0c 您的支持就是我的写作的动力 文章目录 一 PINN介绍二 物理信息驱动深度学习动手编程教程三 物理信息驱动深度学习方法几点讨论四 相关论文1 定义问题 建立工程架构2 网络结构选择3 不确定性
  • 极限学习机(Extreme Learning Machine,ELM)详解

    ELM ELM的提出目的是为了解决人工神经网络训练时耗费的时间和高成本 对此 xff0c 2004年由南洋理工大学的黄广斌提出了ELM学习理论 机器或者生物学习可以不需要调整隐层节点 xff1a 给定任何连续目标函数或者可分类目标 xff0
  • PINN深度学习求解微分方程系列一:求解框架

    下面我将介绍内嵌物理知识神经网络 xff08 PINN xff09 求解微分方程 首先介绍PINN基本方法 xff0c 并基于Pytorch框架实现求解一维Poisson方程 内嵌物理知识神经网络 xff08 PINN xff09 入门及相
  • PINN深度学习求解微分方程系列三:求解burger方程逆问题

    下面我将介绍内嵌物理知识神经网络 xff08 PINN xff09 求解微分方程 首先介绍PINN基本方法 xff0c 并基于Pytorch的PINN求解框架实现求解含时间项的一维burger方程逆问题 内嵌物理知识神经网络 xff08 P
  • 深度学习求解微分方程系列五:PINN求解Navier-Stokes方程正逆问题

    下面我将介绍内嵌物理知识神经网络 xff08 PINN xff09 求解微分方程 首先介绍PINN基本方法 xff0c 并基于Pytorch的PINN求解框架实现求解含时间项的二维Navier Stokes方程 内嵌物理知识神经网络 xff
  • Keras解读:使用Model()类构建网络模型的底层原理

    目录 一 前言 xff1a 二 topology py脚本简述 三 继承了Layer类的子类一般要实现 xff08 重写 xff09 以下methods xff1a 四 Node layer tensor在网络构建过程中的关系 建议结合源码
  • 【Paraview教程】第一章安装与基础介绍

    1 Paraview介绍 1 1基本介绍 ParaView是一个开源的 xff0c 跨平台的数据处理和可视化程序 ParaView用户可以迅速的建立起可视化环境利用定量或者是定性的手段去分析数据 利用它的批量处理能力可以在三维空间内在工具栏
  • 一种基于物理信息极限学习机的PDE求解方法

    作者 PINN山里娃 xff0c 作者主页 研究方向 物理信息驱动深度学习 不确定性 人工智能 偏微分方程 极限学习机 该作者聚焦深度学习模型与物理信息结合前沿研究 xff0c 提供了一系列AI for science研究进展报告及代码实现
  • js文件分片上传,断点续传

    前言 文件上传是一个老生常谈的话题了 xff0c 在文件相对比较小的情况下 xff0c 可以直接把文件转化为字节流上传到服务器 xff0c 但在文件比较大的情况下 xff0c 用普通的方式进行上传 xff0c 这可不是一个好的办法 xff0
  • JavaScript 大文件分片上传处理

    一 功能性需求与非功能性需求 要求操作便利 xff0c 一次选择多个文件和文件夹进行上传 xff1b 支持PC端全平台操作系统 xff0c Windows Linux Mac 支持文件和文件夹的批量下载 xff0c 断点续传 刷新页面后继续
  • JS实现浏览器端大文件分片上传

    IE的自带下载功能中没有断点续传功能 xff0c 要实现断点续传功能 xff0c 需要用到HTTP协议中鲜为人知的几个响应头和请求头 一 两个必要响应头Accept Ranges ETag 客户端每次提交下载请求时 xff0c 服务端都要添
  • Lua识别Jwt令牌业务

    文章目录 业务场景业务实现lua resty jwt安装令牌识别令牌测试 业务场景 如果想使用Lua识别用户令牌 xff0c 我们需要引入lua resty jwt模块 xff0c 是用于 ngx lua 和 LuaJIT 的 Lua 实现