grails - 将参数传递给Grails自定义验证器

标签 grails grails-validation

http://www.grails.org/doc/latest/ref/Constraints/validator.html

我有一个项目,我希望用户使用通过SMS消息向他们提供的临时密码登录。因此,在登录时,我想使用自定义验证器来检查使用Java类创建的密码。

class LoginCommand {

    String telephoneNumber;  /* the users telephone number, used for logging in */
    String password;         /* the password they entered, must match the generated pw below */

    /* the generated password, which has been sent to the user via SMS */
    String generatedPassword = PasswordGenerator.passwordGenerator(telephoneNumber)

    def jsecSecurityManager

    boolean authenticate() {
        def authToken = new UsernamePasswordToken(telephoneNumber, password)
        try {
            this.jsecSecurityManager.login(authToken)
            return true
        } catch (AuthenticationException ae) {
            return false
        }
    }

    static constraints = {
        telephoneNumber     blank:false
        password            blank:false

        /* the problem lies here, I need to pass that generatedPassword as an argument to the validator here, however I have no idea how to do that */
        password(validator: {
                if (!it.startsWith(generatedPassword)) return ['invalid.password']
        })
    }

}

最佳答案

validator约束接受要验证的对象的参数:

validator: { val, obj ->
    if(!val.startsWith(obj.generatedPassword)) ...
}

关于grails - 将参数传递给Grails自定义验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7389089/

相关文章:

grails - Grails从域验证器获取 session 变量

grails - r:通过taglib添加的外部未作为grails gsp中的链接进行处理

json - 带有JSON参数的Grails域构造函数不起作用

rest - 测试 RESTful JSON Grails Web 服务

客户端上的 Grails remoteField 基本验证

grails - Grails命令对象可为空的约束

Grails 条件可空验证或具有可空选项的自定义验证器

grails - 搜索域类的每个属性

tomcat - 将 grails war 文件部署到 Tomcat 服务器

Grails 错误代码