python - 如何使用 Python click 限制密码尝试次数?
问题描述
我正在尝试使用click设置 CLI 。可以使用密码提示,但出于安全原因,我需要限制尝试次数。
我应该如何实施限制?
现在,我只是在尝试这个:
import ftp_auth
import click
def validate_password_limit(ctx, param, password):
password = password.encode("utf-8")
# Validates password against hashed digest
if not ftp_auth.auth_admin(password):
ctx.fail()
else:
return password
@click.command()
@click.password_option(confirmation_prompt=False,
callback=validate_password_limit)
def log_admin(password):
click.echo("You're in!")
if __name__ == '__main__':
log_admin()
但是我无法设置一个全局限制来踢出尝试错误密码的用户。
注意:ftp_auth
是我自己的 python 文件并auth_admin
检查密码是否正确。True
如果哈希匹配,则返回,False
否则返回。
此外,使用全局变量或在回调中保留计数的更明显的解决方案似乎不起作用。
我试图在回调和之间传递上下文,log_admin
但我似乎找不到我正在尝试设置的计数器,它应该是函数的局部变量。
解决方案
推荐阅读
- sql-server - 部署到 SSIS 服务器时,SSIS 包松散的项目级连接
- anaconda - 在 Spyder 3.3.6 中导入 pygraphviz 时出错:不是有效的 Win32 应用程序
- python - 如何提取每个项目的名称和背景颜色
- excel - 如何在网页搜索栏中输入搜索词并单击结果 url
- javascript - 单击时,我的活动选项卡/占位符没有相应更改
- html - 由于图像大小,两个弯曲的子 div 不会平均分配空间
- unity3d - 将视频从 kinect 获取到 Unity 3D 中的对象
- mongodb - 如何使用 MongoDB Compass 连接到 DogitalOcean Droplets 数据库?
- php - 如何将一个表中的两个或多个列与另一个表中的一个列连接起来,即使第一个表列中有 NULL 值
- javascript - 如何从服务器端使用 Google 登录创建 Firebase 用户