0

我正在为我的 web2py 应用程序的登录过程使用 auth 模块。我想使用正则表达式验证密码,但找不到方法。我们如何修改访问控制以接受正则表达式

4

1 回答 1

2

在模型文件(可能在 db.py 中)中,您应该有以下行,它定义了所有Auth表,包括db.auth_user

auth.define_tables()

db.auth_user定义表时requires,其password字段的属性设置为包含单个CRYPT验证器的列表。如果您想应用正则表达式验证,可以通过在属性中的验证器之前IS_MATCH插入验证器来实现。为此,在上述行之后的任何位置,包括以下内容:CRYPTrequires

password_is_match = IS_MATCH(r'your_regex', error_message='Your error message',
                             search=True)
db.auth_user.password.requires.insert(0, password_is_match)

注意,如果你没有设置search=True,验证器会在你的正则表达式前面加上一个“^”。

另外,请注意,在IS_MATCH验证器之前插入验证器的原因CRYPT是验证CRYPT器通过散列密码来转换密码,因此在验证器之后应用的任何验证CRYPT器都将收到散列密码而不是原始密码。

于 2016-03-17T17:31:40.357 回答