Flask-HTTPAuth 验证密码

1 投票
1 回答
1491 浏览
提问于 2025-04-18 15:24

我在使用flask-httpauth的verify_password时遇到了问题。

我有一个脚本可以处理用户名和密码,它会把密码加密后存储在一个简单的文件里。(是的,这种方式不是最安全的,但我对Flask(Sandman.io)的了解有限,LDAP/LOGIN也无法正常工作。我想把它放进Sandman读取的数据库里,这样会更方便,但我尝试的每一种方法都失败了。)

在我的包装器中,有一部分代码把数据变成了一个字典,代码如下:

users = {}
fileloc = '/usr/lib/sandman/user.list'
with open(fileloc) as i:
     for line in i:
          (key, val) = line.split()
          users[key] = val 

这段代码给我提供了用于身份验证的字典。 如果字典里没有加密的密码,这样就能正常工作,但现在我面临的问题是如何在这个层面上让它正常运作。

下面的代码虽然不工作,但我用它作为测试案例,结果我几乎可以用任何用户名和密码登录(听起来不错吧?...)

@auth.verify_password
def verify_password(username, password):
    users = User.query.filter_by(username).first()
    if not users:
        return False
    return passlib.hash.sha256_crypt.verify(password, users.password_hash)

如果有人能帮忙,我将非常感激。谢谢。

1 个回答

1

你需要在用户需要登录才能访问的页面上标记一下

@auth.login_required

这样才能判断登录是否成功(如果没有成功,你会看到一个访问被拒绝的错误)。我想不出还有其他什么原因会导致你有太多的用户名和密码组合成功,而不是太少。

撰写回答