From fa7185d1d1394c8fc5a4a42cf60d383a324a01f8 Mon Sep 17 00:00:00 2001 From: wanglei <34475144@qqcom> Date: Sat, 8 Nov 2025 15:41:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9D=83=E9=99=90=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=99=A8=E6=96=87=E4=BB=B6=E4=B8=AD=E7=9A=84=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E8=A7=92=E8=89=B2=E4=B8=AD=E7=9A=84=E6=89=80=E6=9C=89?= =?UTF-8?q?=E6=9D=83=E9=99=90=E5=92=8C=E5=88=A0=E9=99=A4=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E5=90=8E=E5=88=A0=E9=99=A4=E6=8E=89=E6=89=80=E5=AF=B9=E5=BA=94?= =?UTF-8?q?=E7=9A=84=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/init.lua | 2 ++ src/share/redis.lua | 4 ++++ src/test/test.lua | 6 ++++-- src/util/permissionfilter.lua | 37 ++++++++++++++++++++++++----------- 4 files changed, 36 insertions(+), 13 deletions(-) diff --git a/src/init.lua b/src/init.lua index 2a38197..1e7d5b3 100644 --- a/src/init.lua +++ b/src/init.lua @@ -79,6 +79,8 @@ local function handler() --共享数据字典进行数据存储 --dict:set("RBAC", "1") + + print("init application success") end -- 设置定时器,执行一次handler函数 diff --git a/src/share/redis.lua b/src/share/redis.lua index 52c0ed9..dbdb8e1 100644 --- a/src/share/redis.lua +++ b/src/share/redis.lua @@ -59,4 +59,8 @@ function _M:ttl(key) return self.red:ttl(key) end +function _M:scan(cursor, method, pattern) + return self.red:scan(cursor, method, pattern) +end + return _M \ No newline at end of file diff --git a/src/test/test.lua b/src/test/test.lua index 78d9771..b010f5e 100644 --- a/src/test/test.lua +++ b/src/test/test.lua @@ -336,12 +336,13 @@ end local perm = require("util.permissionfilter") local rest = perm:getRolePermissions("admin") -for _, row in pairs(rest) do - print(row.key) +for _, key in ipairs(rest) do + print(key) end perm:clearRolePermissions("admin") +--[[ --读取用户表、角色表和权限表中配置的权限数据 local roleDao = require("dao.role") --获取数据表中的记录数 @@ -358,6 +359,7 @@ for _, row in pairs(res) do --row.role_key:超级管理员 print(row.id..row.create_by..row.role_name) end +--]] --[[ --获取数据表中的记录数 diff --git a/src/util/permissionfilter.lua b/src/util/permissionfilter.lua index d2b12b6..c3e5e8f 100644 --- a/src/util/permissionfilter.lua +++ b/src/util/permissionfilter.lua @@ -58,23 +58,38 @@ function _M:getRolePermissions(role_name) --获取redis中所有匹配的数据内容 local pattern = role_name.."-*" local cursor = "0" - local result, err = red:scan(cursor, 'MATCH', pattern) - if not result then - return allPermissions - end - cursor = result[1] - for _, key in ipairs(result[2]) do - table.insert(allPermissions, key) - end + repeat + local result, err = red:scan(cursor, 'MATCH', pattern) + if not result then + return allPermissions + end + cursor = result[1] + for _, key in ipairs(result[2]) do + table.insert(allPermissions, key) + end + until cursor == "0" return allPermissions end -- 清除角色的所有权限 function _M:clearRolePermissions(role_name) --将redis中角色相关的键值去掉 - local keys = red:call("KEYS", role_name.."-*") - if keys then - red:call("DEL", unpack(keys)) + --获取redis中所有匹配的数据内容 + local pattern = role_name.."-*" + local cursor = "0" + local keys = {} + repeat + local result, err = red:scan(cursor, 'MATCH', pattern) + if not result then + break + end + cursor = result[1] + for _, key in ipairs(result[2]) do + table.insert(keys, key) + end + until cursor == "0" + for _, key in ipairs(keys) do + red:del(key) end end