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
}

すべてが無効であると言う場合、これは機能しません。スプリングセキュリティUIプラグインをインストールしています。検証機能を使用する方法はありますか?パスワードのエンコードに使用できることはわかっています。

4

2 に答える 2

2

1つの正規表現ですべてを実行しようとするのではなく、テストを分割します。Groovyでは、Matcherを呼び出すことでブール値を強制するため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 に答える