Я использую модуль auth для процесса входа в систему для своего приложения web2py. Я хочу проверить пароль с помощью регулярных выражений, но не смог найти способ для него. Как мы можем изменить контроль доступа принимать регулярное выражениерегулярное выражение для пароля в web2py
ответ
в файле модели (вероятно, в 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
валидатора получит хэш пароля, а не оригинал ,
где бы у меня был список валидаторов в web2py, чтобы я мог вставить эту строку – radha
, если вы ничего не изменили, это должно быть внутри модели. Db.py –
Надеюсь, отредактированный ответ прояснит ситуацию. Просто используйте код, как показано в ответе, - вам не нужно найти какой-либо список валидаторов в любом месте. – Anthony