我正在使用非常好的 Click 框架来构建一个 Python CLI,它充当一组复杂的 REST API 的“包装器”。我用过"complex" example以便拥有良好的样板代码来构建 CLI 的其余部分。
但是,由于 CLI 本身与 REST API 进行通信,因此我需要为每个命令进行一些配置。示例:用户身份验证(ID、密码等),如果与默认身份验证不同,则为 API 服务器的 URL。
我可以强制用户将这些配置作为每个命令的参数,但是在执行许多命令时这真的很烦人(用户必须为每个命令插入他的身份验证详细信息)。
有没有办法让用户在第一个命令中输入他的凭据,以便让他的 uid/pwd 在整个 session 中持续存在(例如 mysql-cli),并且在执行他需要的命令后,从 CLI 中“注销”?
最佳答案
通常完成此操作的方法是使用一个 configure
命令将这些凭据存储在一个文件中(通常位于用户的 $HOME
文件夹中,如果您使用的是 Linux) )并更改其权限,使其只能由用户读取。
您可以使用configparser
(或 JSON 或 YAML 或您想要的任何内容)根据配置文件加载不同的凭据集:
# $HOME/.your-config-name
[default]
auth-mode=password
username=bsmith
password=abc123
[system1]
auth-mode=oauth
auth-token=abc-123
auth-url=http://system.1/authenticate
[system2]
auth-mode=anonymous
auth-url=http://this-is.system2/start
然后您可以使用全局参数(例如 --profile
)来选择给定请求应使用哪些凭据:
$ your-cli --profile system1 command --for first-system
关于python - 如何使用 Click 在 Python 中处理 CLI 的用户身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29625003/