AuthPlatform/src/test/test.lua

365 lines
10 KiB
Lua
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
--- Generated by EmmyLua(https://github.com/EmmyLua)
--- Created by admin.
--- DateTime: 2025/10/15 09:12
---
--local snowflake = require("util.snowflake")
local helpers = require("share.helpers")
--
--local workerId = 0 -- 假设当前机器的ID是1范围在[0, 31]之间
--local datacenterId = 0 -- 数据中心ID范围在[0, 31]之间
--local snow = snowflake.new(workerId, datacenterId)
--local id = snow:generateUniqueId()-- 生成ID
--ngx.say("Generated ID:"..snow.int64_to_string(id))
--max =a and b or c--a?b:c
local cjson = require("cjson.safe")
--[[
local uuid = require("resty.jit-uuid")
uuid.seed()
local val = uuid()
local uid = uuid.generate_v4() ---> v4 UUID
local uid1 = uuid.generate_v3() ---> v3 UUID (name-based with MD5)
local uid2 = uuid.generate_v5() ---> v5 UUID (name-based with SHA-1)
uuid.is_valid() ---> true/false (automatic JIT PCRE or Lua patterns)
--ngx.say(val.." "..uid)
local args = ngx.req.get_uri_args()
local pageNum = args["pagenum"] or 1
local pageSize = args["pagesize"] or 10
ngx.say("pageNum:", pageNum, " pageSize:", pageSize)
--]]
local cjson = require "cjson"
--local sampleJson = [[{"age":"23","testArray":{"array":[8,9,11,14,25]},"Himi":"himigame.com"}]]
local sampleJson = [[{"raw_header":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9","signature":"zkKAmXifqWDrMaLpXe8hrA1JpDRbdlgwS-yxNnQUOBw","raw_payload":"eyJpYXQiOjE3NjE4OTIwNDMsImV4cCI6MTc2MTg5NTY0MywidXNlcmlkIjoiYWRtaW4iLCJyb2xlIjoiIn0","valid":true,"verified":true,"reason":"everything is awesome~ :p","header":{"alg":"HS256","typ":"JWT"},"payload":{"iat":1761892043,"userid":"admin","exp":1761895643,"role":""}}]]
--解析json字符串
local data = cjson.decode(sampleJson);
--打印json字符串中的age字段
ngx.say(data["raw_header"]);
--打印数组中的第一个值(lua默认是从0开始计数)
ngx.say(data["payload"]["userid"]);
--[[
local jwttoken = require("util.token")
--获取请求头中的令牌数据
local auth_header = ngx.var.http_Authorization
--调用令牌校验
local result = jwttoken.authorizationToken((auth_header))
-- 输出结果
ngx.say(cjson.encode(result))
ngx.exit(result.code)
--]]
--[[
local jsonschema = require("jsonschema")
-- 定义一个JSON Schema
-- 定义一个JSON Schema
local schema = {
{type = "object", properties = {
{name = "username", type = "string"},
{name = "phone", type = "string"},
{name = "email", type = "string"},
{name = "idcard", type = "string"},
{name = "name", type = "string"},
{name = "office_phone", type = "string"},
{name = "telephone", type = "string"},
{name = "display_name", type = "string"},
}, required = {"username", "phone", "email", "idcard"}}
}
-- 待验证的JSON数据
--local json_data = '{"name": "Alice", "age": 30}'
--local data, pos, err = cjson.decode(json_data)
--if err then
-- error("JSON decoding error: " .. err)
--end
--读取请求体的数据
ngx.req.read_body()
--获取请求数据
local body_data = ngx.req.get_body_data()
-- 验证数据是否符合schema
local ok, err = jsonschema:generate_validator(body_data, schema)
if not ok then
error("Validation failed: " .. err)
else
print("Validation succeeded!")
end
--]]
--用于接收前端数据的对象
local args=nil
--获取前端的请求方式 并获取传递的参数
local request_method = ngx.var.request_method
--判断是get请求还是post请求并分别拿出相应的数据
if"GET" == request_method then
args = ngx.req.get_uri_args()
elseif "POST" == request_method then
ngx.req.read_body()
args = ngx.req.get_post_args()
--兼容请求使用post请求但是传参以get方式传造成的无法获取到数据的bug
if (args == nil or args.data == null) then
args = ngx.req.get_uri_args()
end
end
--获取前端传递的name值
local name =
--响应前端
ngx.say("linux hello:"..name)
--[[
local M = {}
local charset = {} do -- [0-9a-zA-Z]
for c = 48, 57 do table.insert(charset, string.char(c)) end
for c = 65, 90 do table.insert(charset, string.char(c)) end
for c = 97, 122 do table.insert(charset, string.char(c)) end
end
function M.uuid(length)
local res = ""
for i = 1, length do
res = res .. charset[math.random(1, #charset)]
end
return res
end
return M
--]]
--[[
local jwt = require("resty.jwt")
local secret_key = "!@#$5412$#@!" -- 确保这个密钥足够安全并保密
--设置JWT的有效载荷
local obj = {
header = {typ="JWT", alg="HS256"},
payload = { -- 自定义数据
username = "admin",
role = "admin",
iss = "your_issuer", -- 签发者
sub = "1234567890", -- 主题
exp = os.time() + 3600, -- 过期时间(例如:当前时间+1小时
iat = os.time() -- 签发时间
}
}
local jwt_token = jwt:sign(secret_key, obj)
ngx.say(jwt_token)
local jwt_obj = jwt:verify(secret_key, jwt_token)
local param = cjson.encode(jwt_obj)
ngx.say(param)
local ok, claims = jwt:verify(jwt_token) -- 使用之前生成的token
if ok then
print("Token is valid")
for k, v in pairs(claims) do
print(k, v)
end
else
print("Token is invalid:", claims) -- claims将包含错误信息
end
--]]
--[[
--创建新的JWT对象
--local jwt_obj = jwt:new()
--设置密钥
local secret_key = "!@#$5412$#@!" -- 确保这个密钥足够安全并保密
--jwt_obj:set_secret(secret_key)
--设置JWT的有效载荷
local payload = {
iss = "your_issuer", -- 签发者
exp = os.time() + 3600, -- 过期时间(例如:当前时间+1小时
iat = os.time(), -- 签发时间
sub = "1234567890", -- 主题
data = { -- 自定义数据
username = "admin",
role = "admin"
}
}
-- 生成JWT token
local jwt_token, err = jwt:sign(secret_key, payload)
if err then
error("Failed to generate JWT token: " .. err)
end
print("Generated JWT Token:", jwt_token)
local ok, claims = jwt:verify(jwt_token) -- 使用之前生成的token
if ok then
print("Token is valid")
for k, v in pairs(claims) do
print(k, v)
end
else
print("Token is invalid:", claims) -- claims将包含错误信息
end
--]]
--[[
--引用使用的库文件
local Model = require("share.model")
--创建一个数据表相关的模型
local userModel = Model:new('sys_user')
--获取数据表中的记录数
local code, res = userModel:count()
ngx.say(res)
--查询表中id为1的数据记录
code, res = userModel:find("1")
if res ~= nil then
ngx.say(table.getn(res))
end
--查询表中的所有记录
code, res = userModel:all()
--显示查询到的数据记录
if code == 0 then
for _, row in ipairs(res) do
for key, value in pairs(row) do
ngx.say(key .. ":" .. tostring(value))
end
end
end
--分页 获取数据表中的记录
local data = nil
code, data = userModel:paginate(1, 10)
local count = data.total
ngx.say("data total:", count)
for _, row in ipairs(data.data) do
ngx.say("begin show data:")
for key, value in pairs(row) do
ngx.say(key .. ":" .. tostring(value))
end
end
ngx.say("----begin where and query---")
-- 返回 users 表中 username 字段的值是 `cgreen` 的,`password` 字段的值是 `xxxxxx` 的多条数据,注意此处返回是 table 数组,`first()` 方法返回的是单条数据
code, res = userModel:where('name','=','zhangsan'):where('password','=','111111'):get()
--ngx.say(code)
--if res ~= nil then
-- for _, row in ipairs(res) do
-- for key, value in pairs(row) do
-- ngx.say(key .. ":" .. tostring(value))
-- end
-- end
--end
--]]
--[[
--ngx.say("----begin where or query---")
-- 返回 `name` 为 `xxx` 或者 `yyy` 的所有用户 table 数组
code, res = userModel:where('name','=','zhangsan'):orwhere('name','=','admin'):get()
--for _, row in ipairs(res) do
-- for key, value in pairs(row) do
-- ngx.say(key .. ":" .. tostring(value))
-- end
--end
--orderby(column, option)方法第一个参数传入排序的列名第二个参数默认为ASC 也可以传入 ASC 正序 或 DESC 倒序(不区分大小写)
code, res = userModel:orderby('created_time'):get()
--for _, row in ipairs(res) do
-- for key, value in pairs(row) do
-- ngx.say(key .. ":" .. tostring(value))
-- end
--end
-- 创建一个用户
code, res = userModel:create({
id='3',
password='22222',
name='lisi',
email='lisi@gmail.com',
})
-- 更新 id = 1 的 user 的 name 为 test, avatar 为 NULL
code, res = userModel:where('id', '=', '3'):update({
phone='666666',
email='zhangsan@qq.com'
})
--输出更新后影响的行总数
ngx.say("update affected_rows: ", res.affected_rows)
-- 删除 id = 1 的用户
code, res = userModel:where('id','=','3'):delete()
ngx.say("delete affected_rows: ", res.affected_rows)
--]]
--[[
--读取请求体的数据
ngx.req.read_body()
--获取请求数据
local body_data = ngx.req.get_body_data()
ngx.say(body_data)
local data = cjson.decode(body_data)
--键值为id产生uuid数据值增加到json中
data.id = helpers.getUuid()
local ret = helpers.convert_json(data)
ngx.say(ret)
--]]
--local header = ngx.req.get_headers()
--for k,v in pairs(header) do
-- ngx.say("[header] name:", k, "value:", v)
--end
--local payloads = ngx.req.get_uri_args()
--for k,v in pairs(payloads) do
-- ngx.say("[params] name:", k, " value:", v)
--end
--去掉组装最后一位逗号(,)
--local newKeys = keys:sub(1, #keys -1)
--local newValues = values:sub(1, #values -1)
--[[
--读取请求体的数据
--ngx.req.read_body()
--获取请求数据
local body_data = ngx.req.get_body_data()
if not body_data then
ngx.say("read file error:", err)
return ngx.exit(400)
end
local len = #body_data
local file_name = ngx.req.get_body_file()
ngx.say("file length:", len)
ngx.req.read_body_in_buffer(ngx.var.request_body_file)
ngx.say(body_data)
--]]
--[[
local cjson = require("cjson.safe")
local file_path = "/home/frankly/work/test.dat"
local file_length = 1024 * 1024 * 400
local f, err = io.input(file_path, "r")
if not f then
ngx.say("read file error:"..err)
return
end
local content = f:read(file_length) --读取文件内容
f:close() --关闭文件
--ngx.say(content)
local res = {
key = "data",
value = content
}
--ngx.header["Length"] = #content
ngx.header["Content-Type"] = 'application/json; charset=UTF-8'
ngx.say(cjson.encode(res))
ngx.log(ngx.INFO, "send data success")
--]]