著者: Dflying Chen ( http://dflying.cnblogs.com/ )
この記事は、数学的手法を使用して論理的判断を実行する難しさを大幅に軽減する、Vitamin C.net の記事から派生したものです。検出コードは、パスワードの強度をチェックするための THIN の JS クラスから取得されます。
Atlas は、クライアントサイド JavaScript の強力なオブジェクト指向機能を提供します。私はここ数日間、上記の 2 つの投稿を見て、この機能要件が依然として日常の開発で非常に一般的であると感じました。夜は何もすることがないので、再利用しやすいように上記の関数を Atlas の Behaviors にカプセル化します。 Atlas の動作の詳細については、「ASP.NET Atlas でのカスタム動作の作成」を参照してください。
ASP.NET Atlas でのカスタム動作の作成に関するこの記事の 5 つのカスタマイズ手順に従えば、この動作を簡単に作成できます。最も重要な部分は、パスワードの強度をテストするためのアルゴリズムです。私はここで怠惰で、単純に THIN コードを完全にコピーしました (興味のある友人は、それをより「アトラス」の外観に再構築できます)。 。この検出関数は、ユーザーが対応する入力のキーを押すたびにトリガーされます:
function keyPressHandler() {
// この部分をリファクタリングして、コードをより「Atlas らしく」することもできます :-)
var PasswordStrength ={
レベル: [「高い、本当に高い」、「大丈夫」、「くそ、大丈夫」]、
LevelValue: [30,20,0],//強さの値
因子: [1,2,5],//文字加数、それぞれ文字、数字、その他
KindFactor: [0,0,10,20],//パスワードには数種類の加数が含まれています
Regex: [/[a-zA-Z]/g,/d/g,/[^a-zA-Z0-9]/g] //文字の通常の数字とその他の通常のルール
}
PasswordStrength.StrengthValue = 関数(pwd)
{
var 強度値 = 0;
var CompusedKind = 0;
for(var i = 0; i < this.Regex.length;i++)
{
var chars = pwd.match(this.Regex[i]);
if(chars != null)
{
strengthValue += chars.length * this.Factor[i];
CompusedKind++;
}
}
strengthValue += this.KindFactor[CompedKind];
強度値を返します。
}
PasswordStrength.StrengthLevel = function(pwd)
{
var 値 = this.StrengthValue(pwd);
for(var i = 0; i < this.LevelValue.length; i++)
{
if(値 >= this.LevelValue[i] )
this.Level[i] を返します。
}
}
// リファクタリングセクションの終わり
$(_checkResultLabelID).innerHTML = PasswordStrength.StrengthLevel(this.control.element.value);
同時に、属性 checkResultLabelID がこの動作に追加され、テスト結果を表示するラベルを指定し
ます
。
this.get_checkResultLabelID = function() {
_checkResultLabelID を返します。
}
this.set_checkResultLabelID = 関数(値) {
if (_checkResultLabelID != 値) {
_checkResultLabelID = 値;
this.raisePropertyChanged('checkResultLabelID');
}
また、さまざまな強度の入力に対してプロンプト テキストの背景色を変更するなど、さらに派手な機能を簡単に追加することもできます
。
完全なソース コードについては、この記事の最後にあるダウンロードを参照してください。
テストの手順も非常に簡単です。まず、ScriptManager にこの Behavior への参照を追加します:
<atlas:ScriptManager runat="server" ID="ScriptManager1">。
<スクリプト>
<atlas:ScriptReference Path="PasswordStrengthCheckBehavior.js" />
</スクリプト>
ため
の入力をページに追加し (デモ プログラムではタイプがパスワードに設定されていません)、テスト結果を表示するためのスパンを追加します:
<div>
パスワードを入力してください:
<input id="パスワード" type="テキスト" />
<span id="result"></span>
</div>
最後に、Atlas スクリプトは上記の入力を Atlas コントロールにプロモートし、先ほど作成した動作を追加します。
<script type="text/xml-script">
<page xmlns:script=" http://schemas.microsoft.com/xml-script/2005 ">
<コンポーネント>
<textBox id="パスワード">
<行動>
<passwordStrengthCheckBehavior checkResultLabelID="結果" />
</動作>
</textBox>
</コンポーネント>
</ページ>
</script>
ブラウザでは次のように簡単です:
単純なパスワード:
中程度のパスワード:
複雑なパスワード:
ソースコードとサンプルプログラムはここからダウンロードできます。