首页 > 解决方案 > 如何使用 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但我似乎找不到我正在尝试设置的计数器,它应该是函数的局部变量。

标签: pythonsecurityauthenticationclickpython-click

解决方案


推荐阅读