我通过执行以下操作在auth中启用了用户名:
auth.define_tables(username=True)
如何阻止用户在黑名单中注册名称,例如:
admin
administrator
moderator
sysadmin
可能令人反感的话
更新
这是我制作的用户名验证器:
class UsernameValidator(object):
def __init__(self, error_message='Invalid username'):
self.error_message = error_message
def __call__(self, value):
if self.validate(value):
return (value, None)
else:
return (value, self.error_message)
def validate(self, value):
blacklist = ['administrator', 'moderator', 'admin', '<swear word>']
if any(word in value for word in blacklist):
return False
else:
return True
我把它放在一个模板文件中,文件名以“0”开头,所以它会在db.py之前加载
答案 0 :(得分:1)
def validate_username(form):
if form.vars.username in ['admin', 'administrator', 'moderator']:
form.errors.username = '%s is not a valid username.' % \
form.vars.username
auth.settings.register_onvalidation.append(validate_username)
您还可以创建custom validator并执行:
db.auth_user.username.requires.append(MyCustomValidator())