我正在使用非常好的Click框架来构建一个Python,它充当了一组复杂REST API的“包装器”。我使用“复杂”例子是为了有好的样板代码来构建CLI的其余部分。
但是,由于CLI本身与REST通信,我需要对每个命令进行一些配置。示例:用户身份验证(id、密码等),如果与默认身份验证不同,则使用URL到API服务器。
我可以强迫用户将这些配置作为每个命令的参数,但在执行许多命令时,这会非常烦人(用户必须为每个命令插入自己的详细信息)。
是否有一种方法让用户在第一个命令中输入他的凭据,以便使他的uid/pwd在整个会话(例如mysql-cli )中持久化,并在执行他需要的命令之后,从CLI“注销”?
发布于 2015-04-14 19:32:53
通常这样做的方法是使用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-systemhttps://stackoverflow.com/questions/29625003
复制相似问题