12

標準の ASP.NET 認証プロバイダー (たまたま AspNetSqlMembershipProvider) を使用しており、デフォルトのパスワード強度要件は、私たちのニーズに対して少し過剰です。

ユーザーは、少なくとも英数字のパスワードを入力する必要があります (つまり、ユーザーが希望する場合は、文字と少なくとも 1 つの数字が必須で、大文字と小文字が混在し、英数字以外の文字も使用できます)。

これを実現する PasswordStrengthRegularExpression の設定を誰でも提案できますか?

また、ユーザーが使用しようとしたパスワードが正規表現のチェックに失敗した場合に、ユーザーに表示されるエラー メッセージをどのように制御できますか?

ノート

minRequiredNonalphanumericCharactersプロパティを に設定する必要があることが判明しました0。それ以外の場合、この設定は使用される正規表現をオーバーライドします

4

2 に答える 2

43

8 ~ 16 文字の pwd を検証し、次の 4 つの項目のうち 3 つを含む次の式を実装しました: 大文字、小文字、記号、数字

(?=^[^\s]{8,16}$)((?=.*?\d)(?=.*?[A-Z])(?=.*?[a-z])|(?=.*?\d)(?=.*?[^\w\d\s])(?=.*?[a-z])|(?=.*?[^\w\d\s])(?=.*?[A-Z])(?=.*?[a-z])|(?=.*?\d)(?=.*?[A-Z])(?=.*?[^\w\d\s]))^.*

個々のコンポーネントの説明:

  • (?=^[^\s]{8,16}$) - 8 ~ 16 個の空白以外の文字を含む
  • (?=.*?\d) - 1 つの数値を含む
  • (?=.*?[AZ]) - 大文字 1 文字を含む
  • (?=.*?[az]) - 1 つの小文字を含む
  • (?=.*?[^\w\d\s]) - 1 つの記号を含む

長さセグメントの後に二重括弧があり、式の後半に複数の | が表示されることに注意してください。これにより、許可されている 4 つの可能な組み合わせのどちらかまたは両方を比較できます。

これを書いた後、この質問が1年以上前に出されたことに気づきました。検索でこの質問に出くわしたので、他の誰かが私たちのソリューションから利益を得ることができることを願っています.

于 2010-05-18T19:24:36.657 に答える
16

すべての文字を許可し、少なくとも 1 つの数字と少なくとも 6 文字を必要とする正規表現を次に示します。

^.*(?=.{6,})(?=.*\d).*$

より多くまたはより少ない文字を定義したい場合は(?=.{6,})、必要な文字数を反映するように変更するだけです。

于 2009-01-15T17:29:13.460 に答える