我正在使用auth模块进行web2py应用程序的登录过程。我想使用正则表达式验证密码但是找不到它的方法。我们如何修改访问控制以接受正则表达式< / p>
答案 0 :(得分: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
,验证器会在你的正则表达式前加上&#34; ^&#34;。
另请注意,在IS_MATCH
验证程序之前插入CRYPT
验证程序的原因是CRYPT
验证程序通过对其进行散列来转换密码,因此任何验证程序都应用之后 CRYPT
验证程序将收到散列密码而不是原始密码。