gpt4 book ai didi

authentication - OpenWrt:LuCI:如何实现受限用户访问

转载 作者:行者123 更新时间:2023-12-04 20:45:38 42 4
gpt4 key购买 nike

目标:两个用户root和user。 Root 可以通过 Web 界面访问所有内容,但用户应该只能看到菜单的某些部分。

一种选择是将“sysauth”选项传递给每个有问题的模块。这不是很实用,因为用户会看到每个菜单条目,并且会为他不允许访问的每个菜单获取登录页面。

我的想法是找出谁登录了,然后在每个受限模块的 index() 函数中什么都不做。到目前为止,我在 LuCI API ( http://luci.subsignal.org/api/luci/ ) 中找不到这样的函数,它会返回当前登录的用户。

我知道如何在 OpenWrt/LuCI (https://forum.openwrt.org/viewtopic.php?pid=163013#p163013) 中添加其他用户。但这只是解决方案的一部分。

任何想法,如何实现我的目标?

最佳答案

我最终创建了一个 Lua 函数,如下所述:http://lua-users.org/wiki/SaveTableToFile , 从表中查找和删除不需要的键。

function remove_idx(  tbl, index )

-- initiate variables for save procedure
local tables,lookup = { tbl },{ [tbl] = 1 }

for idx,t in ipairs( tables ) do
local thandled = {}

for i,v in ipairs( t ) do
thandled[i] = true
local stype = type( v )
-- only handle value
if stype == "table" then
if not lookup[v] then
table.insert( tables, v )
lookup[v] = #tables
end
else
if i == index then
t[i] = nil
return
end
end
end

for i,v in pairs( t ) do
-- escape handled values
if (not thandled[i]) then

local flag = 0
local stype = type( i )
-- handle index
if stype == "table" then
if not lookup[i] then
table.insert( tables,i )
lookup[i] = #tables
end
else
flag = 1
if i == index then
t[i] = nil
return
end
end

if flag == 1 then
stype = type( v )
-- handle value
if stype == "table" then
if not lookup[v] then
table.insert( tables,v )
lookup[v] = #tables
end
else
if i == index then
t[i] = nil
return
end
end
end

end
end
end
end

然后在 libs/web/luasrc/dispatcher.lua dispatch() 中插入我的用户检查和页面删除:
if c and c.index then
local tpl = require "luci.template"

if util.copcall(tpl.render, "indexer", {}) then
return true
end
end

这就是我根据谁登录删除不需要的页面的方式:
    if ctx.authuser == "user" then
remove_idx(ctx.tree, "packages")
remove_idx(ctx.tree, "leds")
end

它有点快速和肮脏,但它有效。请注意,直接访问由
仍然可以操作 URL。

更新

LuCI2 将提供 ACL 支持和多用户环境: http://git.openwrt.org/?p=project/luci2/ui.git;a%3Dsummary

关于authentication - OpenWrt:LuCI:如何实现受限用户访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18377138/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com