0

我正在使用 web2py 设计我的 Law_firm 管理应用程序,但由于某种原因,我希望能够以编程方式更新控制器中的密码,但是当我这样做时,它显示为一个普通的未加密字符串,您可以阅读它。那么如何将 CRYPT 验证器应用于我的更新,因为我无法使用新的未加密密码登录,这是我在控制器中的代码尖晶石。

record = db.auth_user(confirm.id)
            if record:
                new_password = password_generator(12, UPPER_ALPHANUM)
                record.update_record(password=new_password)

注意:password_generator(a,b) 是一个全局函数,我在其中一个模型中构建了一些生成随机密码的模型,我必须在更新现有密码时使用该密码。但事实证明,当我检查数据库而不是得到这样的东西时

pbkdf2(1000,20,sha512)$aee0b78b97611f11$56e6595198b550ef26b7d2b5ef6a507c0a3cf858

我结束了这个

D4SO0GSIK98W

而且我只是无法登录,除了它不安全,所以我如何应用 CRYPT 验证器,我相信这样我可以登录并且我可以安全,请我不想使用内置的重置密码,因为这是不同的试图做一些事情来完成一些远离那个背景的事情。

4

1 回答 1

0

密码通过密码字段的验证器(即其requires属性)进行转换,因此在更新时应用验证器的最简单方法是使用以下.validate_and_update方法:

db(db.auth_user.id == record.id).validate_and_update(password=new_password)

或者,您可以直接应用验证器:

crypt_validator = db.auth_user.password.requires[0] # The validator is in a list.
hash_password = lambda password: crypt_validator(password)[0]
record.update_record(password=hash_password(new_password))

请注意,每个验证器都返回一个元组,其中包括(可能已转换的)值和一个None或一个错误消息。所以,上面的hash_password函数提取了转换后的值,它是返回元组的第一个元素。

于 2018-08-12T00:51:43.037 回答