Grails验证密码

时间:2012-09-20 13:10:52

标签: grails

在控制器中,如何验证密码,使其至少包含1个字母,1个数字,1个特殊字符,且长度至少为8位。我试图使用的代码如下:

  boolean validatePassword(String password) {
    System.out.println("In validate")
   def pattern = /^.*(?=.{7,})(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%*&+()]).*$/
    def matcher = password =~ pattern
    System.out.println("HERERERE")
    return matcher.getCount() ? true : false
}

如果说一切都无效,这不起作用。 我安装了spring security ui plug。有没有办法可以使用它的验证功能? 我知道我可以用它来编码密码。

2 个答案:

答案 0 :(得分:2)

我没有尝试在一个正则表达式中做所有事情,而是将测试分开。因为在Groovy中Matcher通过调用find()强制转换为布尔值,所以以下内容应该有效,并使意图更清晰。

boolean validatePassword(String pass) {
  return (pass) && (pass.length() > 7) && (pass =~ /\p{Alpha}/) &&
         (pass =~ /\p{Digit}/) && (pass =~ /[!@#$%*&+()]/)
}

答案 1 :(得分:0)

如果你需要更复杂的东西

,还有一个很好的java库,叫做vtpassword

http://code.google.com/p/vt-middleware/wiki/vtpassword