2016-03-17 5 views
0

Я использую модуль auth для процесса входа в систему для своего приложения web2py. Я хочу проверить пароль с помощью регулярных выражений, но не смог найти способ для него. Как мы можем изменить контроль доступа принимать регулярное выражениерегулярное выражение для пароля в web2py

ответ

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 валидатора получит хэш пароля, а не оригинал ,

+0

где бы у меня был список валидаторов в web2py, чтобы я мог вставить эту строку – radha

+0

, если вы ничего не изменили, это должно быть внутри модели. Db.py –

+0

Надеюсь, отредактированный ответ прояснит ситуацию. Просто используйте код, как показано в ответе, - вам не нужно найти какой-либо список валидаторов в любом месте. – Anthony