2012-04-02 4 views
0

最小8文字の英数字のパスワードルールを実装します。新しいフィールドと確認フィールドが現在チェックされています。これらのルールは、ユーザーの新しいインスタンスを作成し、既存のユーザーのパスワード機能を変更するときに適用する必要があります。 1)これを行うことができるgrailsプラグインがある場合。 2)プラグインなしで手動で行うことができない場合は、javascriptベースの検証が良い戦略です。 ありがとうございますgrailsでパスワードルールを実装する

答えて

0

パスワードの制約でhttp://grails.org/doc/2.0.x/ref/Constraints/validator.htmlを使用してください。

+0

ありがとうございますが、grails 1.3.7バージョンを使用していますが、まだgrails 2.0バージョンに移行されていません。 –

+0

は1.3.7で動作するはずです –

0

彼が言及しているのはカスタム検証であり、これも1.3.7の一部であるため、Rayが何を提案しているのでしょうか。 (これは彼が2.0のドキュメントを参照しているところです)カスタムバリデーションのすべてのルールを書き留めるだけで、オブジェクトがデータベースに永続化される前に、それらすべてのルールに対して検証されるか、検証を呼び出すことができます保存する前に値を検証するためにいつでもオブジェクト上の()メソッドを呼び出すことができます。

質問の2番目の部分に来る:同じjavascriptのチェックが必要ですか?

回答ははいです。クライアント側の検証でユーザーエクスペリエンスが向上し、サーバー側の検証によってデータの整合性が維持されるため、クライアント側とサーバー側の両方の検証が適切に行われることは常に良いことです。クライアント側の検証でも整合性が保証されますが、これらは合格する可能性があるため、これらのものだけに頼るべきではありません。

これが役に立ちます。

0

私はこれを行う2つの方法を考えることができます。 @ ray-tayekは、パスワードがドメインクラスフィールドとして格納されていると想定していましたが、それはプライベートではありませんでした。パスワードはネットワーク(イントラネットまたはインターネット)上でプレーンテキストとして送信され、同じ方法でデータベースを更新します。あなたはHTTPSを使用している場合は、前者が真実ではないので、(代わりにカスタムバリデータを使用しての)あなたは、正規表現(未テスト)かかりmatchesの制約を使用することができます:とにかく

class User { 
    String username 
    String password 

    static constraints = { 
     username blank: false // whatever 
     password minLenght: 8, matches: /^[\d\p{L}]*$/ // Digits or any kind of letter 
    } 
} 

を、私は希望doは正しい場合にパスワードでクライアント側をJavaScriptで検証し、SHA-1などのハッシュを計算してサーバーに送信します。だから、

static constraints = { 
     // ... 
     passwordHash matches: /^\b[0-9a-f]{5,40}\b$/ 
    } 

、ユーザーはあなたがチェックすべきでログインしようとします。その場合は、すべてのあなたは、サーバー側でハッシュを簡単に行うことができSHA-1の文字列に適合していることである確認する必要があります単純なパスワードを使用する代わりに、ハッシュを格納し、送信します。

関連する問題