المؤلف: Dflying Chen ( http://dflying.cnblogs.com/ )
هذه المقالة مستمدة من مقال عن فيتامين C.net الذي يستخدم الأساليب الرياضية لتقليل صعوبة تنفيذ الحكم المنطقي بشكل كبير. يأتي رمز الكشف من فئة JS الخاصة بـ THIN للتحقق من قوة كلمة المرور.
يوفر Atlas وظائف قوية موجهة للكائنات لجافا سكريبت من جانب العميل. لقد رأيت منشورات الاثنين أعلاه في الأيام القليلة الماضية وأشعر أن هذا المطلب الوظيفي لا يزال شائعًا جدًا في التطوير اليومي. ليس لدي ما أفعله في الليل، لذلك قمت بتغليف الوظائف المذكورة أعلاه في السلوكيات في Atlas لسهولة إعادة استخدامها. للحصول على معلومات حول سلوك Atlas، الرجاء الرجوع إلى: إنشاء سلوك مخصص في ASP.NET Atlas.
باتباع خطوات التخصيص الخمس الواردة في هذه المقالة حول إنشاء سلوك مخصص في ASP.NET Atlas، من السهل كتابة هذا السلوك. الجزء الأكثر أهمية هو خوارزمية اختبار قوة كلمة المرور. لقد كنت كسولًا هنا وقمت ببساطة بنسخ رمز THIN بالكامل (أخي، لا توبيخني -_-b) ويمكن للأصدقاء المهتمين إعادة بنائه إلى مظهر يشبه "الأطلس". . سيتم تشغيل وظيفة الكشف هذه في كل مرة يضغط فيها المستخدم على مفتاح في الإدخال المقابل:
function keyPressHandler() {
// يمكنك إعادة بناء هذا الجزء لجعل الكود أكثر "مثل الأطلس" :-)
فار قوة كلمة المرور ={
المستوى: ["مرتفع، إنه مرتفع حقًا"، "لا بأس"، "اللعنة، هذا جيد"]،
LevelValue: [30,20,0],//قيمة القوة
العامل: [1،2،5]، // يضيف الحرف، على التوالي، الحروف والأرقام وغيرها
KindFactor: [0,0,10,20],// تحتوي كلمة المرور على عدة أنواع من الإضافات
التعبير العادي: [/[a-zA-Z]/g,/d/g,/[^a-zA-Z0-9]/g] // أحرف الأرقام العادية والقواعد العادية الأخرى
}
كلمة المرورStrength.StrengthValue = الوظيفة (pwd)
{
فار قوة القيمة = 0؛
فار كومبوسيد كيند = 0;
for(var i = 0; i < this.Regex.length;i++)
{
var chars = pwd.match(this.Regex[i]);
إذا (الأحرف! = فارغة)
{
StrengthValue += chars.length * this.Factor[i];
ComposedKind++;
}
}
StrengthValue += this.KindFactor[ComposeKind];
قيمة قوة الإرجاع؛
}
كلمة المرورStrength.StrengthLevel = الوظيفة (pwd)
{
قيمة فار = this.StrengthValue(pwd);
for(var i = 0; i < this.LevelValue.length; i++)
{
إذا (القيمة >= this.LevelValue[i] )
إرجاع this.Level[i];
}
}
// نهاية قسم إعادة البناء
$(_checkResultLabelID).innerHTML = كلمة المرورStrength.StrengthLevel(this.control.element.value);
}
في الوقت نفسه، تتم إضافة السمة checkResultLabelID إلى هذا السلوك لتحديد التسمية لعرض نتائج الاختبار:
var _checkResultLabelID;
this.get_checkResultLabelID = function() {
إرجاع _checkResultLabelID؛
}
this.set_checkResultLabelID = الوظيفة(القيمة) {
إذا (_checkResultLabelID != القيمة) {
_checkResultLabelID = value;
this.raisePropertyChanged('checkResultLabelID');
}
}
يمكنك أيضًا إضافة المزيد من الوظائف الرائعة بسهولة، مثل تغيير لون خلفية النص المطالبة لمدخلات ذات نقاط قوة مختلفة، وما إلى ذلك. للحصول على كود المصدر الكامل، يرجى الرجوع إلى التنزيل في نهاية هذه المقالة.
خطوات الاختبار بسيطة جدًا أيضًا، أولاً، قم بإضافة مرجع إلى هذا السلوك في ScriptManager:
<atlas:ScriptManager runat="server" ID="ScriptManager1">.
<البرامج النصية>
<atlas:ScriptReference Path="PasswordStrengthCheckBehavior.js" />
</مخطوطات>
</atlas:ScriptManager>
ثم أضف مدخلاً إلى الصفحة لإدخال كلمة المرور (لم يتم تعيين النوع على كلمة المرور في البرنامج التجريبي)، ومسافة لعرض نتائج الاختبار:
<div>
أدخل كلمة المرور:
<معرف الإدخال = "كلمة المرور" نوع = "نص" />
<span id="result"></span>
</div>
أخيرًا، يعمل برنامج Atlas Script على ترقية الإدخال أعلاه إلى عنصر تحكم Atlas وإضافة السلوك الذي كتبناه للتو:
<script type="text/xml-script">
<page xmlns:script=" http://schemas.microsoft.com/xml-script/2005 ">
<المكونات>
<textBox id="password">
<السلوكيات>
<passwordStrengthCheckBehavior checkResultLabelID="result" />
</السلوكيات>
</textBox>
</المكونات>
</صفحة>
</script>
الأمر بهذه البساطة، كما يلي في المتصفح:
كلمة مرور بسيطة:
كلمة المرور المتوسطة:
كلمة المرور المعقدة:
يمكن تنزيل كود المصدر ونماذج البرامج هنا: