1

在控制器中,我如何验证密码,使其至少包含 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 插件。有没有办法可以使用它的验证功能?我知道我可以用它来编码密码。

4

2 回答 2

2

我没有尝试在一个正则表达式中做所有事情,而是拆分了测试。由于在 Groovy 中 aMatcher通过调用强制转换为布尔值find(),因此以下应该可以工作,并使意图更清晰。

boolean validatePassword(String pass) {
  return (pass) && (pass.length() > 7) && (pass =~ /\p{Alpha}/) &&
         (pass =~ /\p{Digit}/) && (pass =~ /[!@#$%*&+()]/)
}
于 2012-09-20T13:28:53.133 回答
0

如果您需要更复杂的东西,还有一个很好的名为 vtpassword 的 Java 库

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

于 2012-09-21T09:04:09.030 回答