gpt4 book ai didi

python - 在 Python 的 cmd 模块中隐藏命令

转载 作者:太空宇宙 更新时间:2023-11-04 10:56:54 24 4
gpt4 key购买 nike

我正在编写一个基于 Python 的 cmd 模块(实际上是 cmd2,但它们非常相似)的命令行工具。该工具连接到需要身份验证的 REST API;每个用户都有自己的权限级别(想想管理员和普通用户)。

在我的 Python 代码中,我创建了一个与 API 的每个方法相对应的 do_* 方法。这意味着我最终会得到像 do_an_admin_commanddo_regular_user_command 这样的东西,任何运行该工具的人都可以调用它们,无论他的用户的权限级别如何。

如果用户没有特权,我需要一种隐藏 Python 工具中可用的每个管理命令的方法。您可以假设该工具在启动时知道使用什么凭据来对 API 进行身份验证以及用户是否具有特权;此外,管理命令是常规命令的超集。

有什么想法吗?

最佳答案

将子类化发挥你的优势:

class RegularShell(cmd.Cmd):
do_search(self, arg):
...
do_retrieve(self, arg):
...

class AdminShell(RegularShell):
do_update(self, arg):
...

使用 REST API,将特权用户连接到 AdminShell,将其他用户连接到 RegularShell。

要考虑的另一种替代方法是使用 precmd Hook 来查看授权检查。

关于python - 在 Python 的 cmd 模块中隐藏命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9127131/

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