修改用户登录后token生成payload中增加角色id和角色名称,对表联查进行函数封装对用户登录认证函数进行修改
This commit is contained in:
parent
fc93726079
commit
f7d8be056a
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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)
|
||||
--读取数据错误
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 = {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
--[[
|
||||
--获取数据表中的记录数
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user