【问题标题】:Passing arguments to Grails custom validator将参数传递给 Grails 自定义验证器
【发布时间】:2011-09-12 13:59:11
【问题描述】:

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']
        })
    }

}

【问题讨论】:

    标签: grails grails-validation


    【解决方案1】:

    validator 约束为正在验证的对象提供一个参数:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-12
      • 2018-08-20
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多