我正在为我的 web2py 应用程序的登录过程使用 auth 模块。我想使用正则表达式验证密码,但找不到方法。我们如何修改访问控制以接受正则表达式
问问题
193 次
1 回答
2
在模型文件(可能在 db.py 中)中,您应该有以下行,它定义了所有Auth
表,包括db.auth_user
:
auth.define_tables()
db.auth_user
定义表时requires
,其password
字段的属性设置为包含单个CRYPT
验证器的列表。如果您想应用正则表达式验证,可以通过在属性中的验证器之前IS_MATCH
插入验证器来实现。为此,在上述行之后的任何位置,包括以下内容:CRYPT
requires
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 回答