修改用户登录后token生成payload中增加角色id和角色名称,对表联查进行函数封装对用户登录认证函数进行修改

This commit is contained in:
wanglei 2025-11-07 17:06:39 +08:00
parent fc93726079
commit f7d8be056a
7 changed files with 89 additions and 46 deletions

View File

@ -3,10 +3,7 @@
--- Created by frankly.
--- DateTime: 2025/10/29 23:36
---
--引用使用的库文件
local model = require("share.model")
--创建一个数据表相关的模型
local userModel = model:new('sys_user')
local userDao = require("dao.user")
local _M = {}
@ -20,24 +17,7 @@ local function authenticate(name, passwd)
if passwd == "" then
return 0x010002, nil
end
local pwdMd5 = ngx.md5(passwd)
--根据用户进行验证用户是否存在
local code, res = userModel:where("username", "=", name):where("password", "=", pwdMd5):get()
if code == 0 and res ~= nil then
return code, res
end
--根据手机号进行验证用户是否存在
code, res = userModel:where("phone", "=", name):where("password", "=", pwdMd5):get()
if code == 0 and res ~= nil then
return code, res
end
--根据邮箱进行验证用户是否存在
code, res = userModel:where("email", "=", name):where("password", "=", pwdMd5):get()
if code == 0 and res ~= nil then
return code, res
end
--查询不到用户信息
return 0x010003, nil
return userDao:adjustUser(name, passwd)
end
--用户登录业务逻辑处理
@ -60,6 +40,14 @@ function _M.login(jsonData)
if num <= 0 then
return 0x01000C,nil
end
local userid = res[1].id
--获取用户id查询角色信息
local err, rest = userDao:userRole(userid)
if rest == nil then
return 0x01000C,nil
end
res[1].role_id = rest[1].role_id
res[1].role_name = rest[1].role_name
return 0, res
end
@ -72,11 +60,11 @@ end
--用户注册业务逻辑处理
function _M.signup(jsonData)
return userModel:addSystemUser(jsonData)
return userDao:addSystemUser(jsonData)
end
function _M.getUser(userid)
return userModel:find(userid)
return userDao:getSystemUser(userid)
end
return _M

View File

@ -10,6 +10,8 @@ local model = require("share.model")
--创建一个数据表相关的模型
local userModel = model:new('sys_user')
local roles = require("dao.role")
local _M = {}
local user = {
@ -101,4 +103,38 @@ function _M:updateSystemUser(id, jsonData)
return userModel:where('id', '=', id):update(jsonData)
end
--通过用户名和密码验证用户是否存在
function _M:adjustUser(name, passwd)
if name == nil or passwd == nil then
return 0x010003, nil
end
local pwdMd5 = ngx.md5(passwd)
--根据用户进行验证用户是否存在
local code, res = userModel:where("username", "=", name):where("password", "=", pwdMd5):get()
if code == 0 and res ~= nil then
return code, res
end
--根据手机号进行验证用户是否存在
code, res = userModel:where("phone", "=", name):where("password", "=", pwdMd5):get()
if code == 0 and res ~= nil then
return code, res
end
--根据邮箱进行验证用户是否存在
code, res = userModel:where("email", "=", name):where("password", "=", pwdMd5):get()
if code == 0 and res ~= nil then
return code, res
end
--查询不到用户信息
return 0x010003, nil
end
--通过用户id获取角色的角色id和角色名称
function _M:userRole(id)
local sql = [[SELECT "a"."id","a".username,b."id" AS role_id,b.role_name FROM
sys_user AS "a" INNER JOIN sys_user_role AS "c" ON "a"."id" = "c".user_id
INNER JOIN sys_role AS b ON "c".role_id = b."id" WHERE
"a"."id" = ']]..id.."'"
return userModel:exec(sql)
end
return _M

View File

@ -2,7 +2,7 @@
--- Generated by EmmyLua(https://github.com/EmmyLua)
--- Created by admin.
--- DateTime: 2025/10/28 11:09
---
--- 用于
local resp = require("util.response")
local authDao = require("dao.auth")
local validator = require("validator.auth.auth")
@ -36,15 +36,12 @@ function _M.login()
resp:send(result)
return
end
local id = ""
local username = ""
for _, row in ipairs(ret) do
id = row.id
username = row.username
end
local id = ret[1].id
local username = ret[1].username
local role_id = ret[1].role_id
local role_name = ret[1].role_name
--获取的登陆的用户信息返回tocken
local jwt_token = token.generateToken(id, username)
local jwt_token = token.generateToken(id, username, role_id, role_name)
local data = {}
data["token"] = jwt_token
data["userInfo"] = ret
@ -95,8 +92,9 @@ function _M.logout()
--验证成功记录登出的日志信息
local userid = ret["body"]["payload"]["userid"]
local username = ret["body"]["payload"]["username"]
local rolename = ret["body"]["payload"]["username"]
ngx.log(ngx.INFO, "userid:"..userid.." username:"..username.." rolename:"..rolename.." logout system")
local role_id = ret["body"]["payload"]["role_id"]
local role_name = ret["body"]["payload"]["role_name"]
ngx.log(ngx.INFO, "userid:"..userid.." username:"..username.." role_id:"..role_id.." role_name:"..role_name.." logout system")
local result = resp:json(0, "用户退出系统成功")
resp:send(result)
end
@ -143,6 +141,9 @@ function _M.permission()
end
--验证成功获取用户id信息
local userid = retToken["body"]["payload"]["userid"]
local username = retToken["body"]["payload"]["username"]
local role_id = retToken["body"]["payload"]["role_id"]
local role_name = retToken["body"]["payload"]["role_name"]
--通过用户id查询到用户的权限信息
local code, ret = authDao.getUser(userid)
--读取数据错误

View File

@ -36,7 +36,7 @@ function _M.getSystemUsers(m)
local path = m._path
ngx.log(ngx.INFO, "path:"..path.." method:"..method)
--判断当前接口用户和角色是否有权限
--获取页码和请求的数据量
--local args = ngx.req.get_uri_args()
local pageNum = ngx.var.pagenum or 1

View File

@ -64,6 +64,7 @@ function _M:retrieve_relations(ids)
return {}
end
local ids_str = implode(unique(ids))
print(ids_str)
self.relation_sql = 'select * from \"'..self.relation.model.table..'\" where ' .. self.relation.foreign_key .. ' in (' .. ids_str .. ')'
return table_remove(self:query(self.relation_sql, READ), self.relation.model:get_hidden())
end
@ -395,6 +396,10 @@ function _M:debug()
ngx.log(ngx.INFO, self.table.." ")
end
function _M:exec(sql)
return self:query(sql, READ)
end
--初始化数据表中的字段
function _M:new(table, attributes, hidden)
local obj = {

View File

@ -102,6 +102,10 @@ ngx.say(addlib.add(5,7))
--end
--[[
-- 方法1直接使用EXISTS命令
local value = redis.call("EXISTS", "admin-system:user:add")
ngx.say("key value exist:"..value)
local val1, err = redis:get("admin-system:user:add")
local val2, err = redis:get("admin-system:user:edit")
local val3, err = redis:get("admin-system:user:delete")
@ -329,12 +333,18 @@ else
end
--]]
--引用使用的库文件
local Model = require("share.model")
--创建一个数据表相关的模型
local userModel = Model:new('sys_user')
local user_and_role = userModel:where('id', '=', "1"):with('sys_role'):get()
local userModel = require("dao.user")
local code, res = userModel:userRole("1")
--显示查询到的数据记录
if res ~= nil then
print("id value: -- ", res[1].id)
for _, row in ipairs(res) do
for key, value in pairs(row) do
ngx.say(key .. ":" .. tostring(value))
end
end
end
--[[
--获取数据表中的记录数

View File

@ -23,21 +23,24 @@ local obj = {
payload = { -- 自定义数据
userid = "", -- 用户id
username = "", -- 用户名
role = "", -- 角色
role_id = "", -- 角色id
role_name = "", -- 角色名称
--iss = "your_issuer", -- 签发者
--sub = "1234567890", -- 主题
exp = ngx.time() + 3600, -- 过期时间(例如:当前时间+1小时
iat = ngx.time() -- 签发时间
exp = ngx.time() + 3600, -- 过期时间(例如:当前时间+1小时
iat = ngx.time() -- 签发时间
}
}
function _M.generateToken(userid, username)
if userid == nil or username == nil then
function _M.generateToken(userid, username, role_id, role_name)
if userid == nil or username == nil or role_id == nil or role_name == nil then
return ""
end
obj.payload.userid = userid
obj.payload.username = username
obj.payload.role_id = role_id
obj.payload.role_name = role_name
--获取的登陆的用户信息返回tocken
local jwt_token = jwt:sign(SYSTEM_CONFIG.secret_key, obj)
return "Bearer "..jwt_token