隐藏Python cmd模块中的命令
我正在编写一个基于 Python 的 cmd 模块(实际上是 cmd2,但它们非常相似)的命令行工具。该工具连接到需要身份验证的 REST API;每个用户都有自己的权限级别(例如管理员和普通用户)。
在我的 Python 代码中,我创建了一个与 API 的每个方法相对应的 do_* 方法。这意味着我最终会得到像 do_an_admin_command
和 do_regular_user_command
这样的东西,任何运行该工具的人都可以调用它们,无论其用户的权限级别如何。
我需要的是一种方法来隐藏 Python 工具中可用的每个管理命令(如果用户没有特权)。您可以假设该工具在启动时知道使用哪些凭据来对 API 进行身份验证以及用户是否具有特权;此外,行政命令是常规命令的超集。
有什么想法吗?
I'm writing a command line tool based on Python's cmd
module (actually, cmd2
, but they're pretty similar). This tool connects to an REST API which requires authentication; each user has his own privilege level (think admin and regular user).
In my Python code I'm creating a do_* method corresponding to each method of the API. That means I'll end up with things like do_an_admin_command
and do_regular_user_command
which will be callable by anyone running the tool, no matter of the privilege level of his user.
What I need is a way to hide every admin command available in the Python tool, if the user is not privileged. You can assume the tool knows at start up what credentials to use to authenticate to the API and whether the user is privileged or not; also, the administrative commands are a superset of the regular ones.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用子类化来发挥您的优势:
使用 REST API,将特权用户连接到 AdminShell,将其他用户连接到 RegularShell。
另一种可供考虑的替代方案是使用 precmd 挂钩来查看授权检查。
Use subclassing to your advantage:
With the REST API, connect privileged users to the AdminShell and others to the RegularShell.
Another alternative to consider is using the precmd hook to see check for authorization.