如何防止在web2py中注册某些用户名?

时间:2014-01-27 07:53:00

标签: web2py username user-registration

我通过执行以下操作在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之前加载

1 个答案:

答案 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())