ผู้แต่ง: Dflying Chen ( http://dflying.cnblogs.com/ )
บทความนี้ได้มาจากบทความเกี่ยวกับ Vitamin C.net ที่ใช้วิธีการทางคณิตศาสตร์เพื่อลดความยากในการตัดสินเชิงตรรกะได้อย่างมาก รหัสการตรวจจับมาจากคลาส JS ของ THIN เพื่อตรวจสอบความแข็งแกร่งของรหัสผ่าน
Atlas นำเสนอฟังก์ชันเชิงวัตถุอันทรงพลังของ JavaScript ฝั่งไคลเอ็นต์ ฉันได้เห็นโพสต์ของทั้งสองข้างต้นในช่วงไม่กี่วันที่ผ่านมา และรู้สึกว่าข้อกำหนดด้านการทำงานนี้ยังคงพบเห็นได้ทั่วไปในการพัฒนารายวัน ฉันไม่มีอะไรทำในเวลากลางคืน ดังนั้นฉันจึงสรุปฟังก์ชันข้างต้นเป็นพฤติกรรมใน Atlas เพื่อให้นำมาใช้ซ้ำได้ง่าย สำหรับข้อมูลเกี่ยวกับพฤติกรรมของ Atlas โปรดดูที่: การสร้างพฤติกรรมที่กำหนดเองใน ASP.NET Atlas
ทำตามขั้นตอนการปรับแต่งห้าขั้นตอนในบทความเกี่ยวกับการสร้างลักษณะการทำงานแบบกำหนดเองใน ASP.NET Atlas การเขียนลักษณะการทำงานนี้เป็นเรื่องง่าย ส่วนที่สำคัญที่สุดคืออัลกอริธึมสำหรับทดสอบความแข็งแกร่งของรหัสผ่าน ฉันขี้เกียจที่นี่และเพียงแค่คัดลอกโค้ด THIN อย่างสมบูรณ์ (พี่ชายอย่าดุฉัน -_-b) เพื่อน ๆ ที่สนใจสามารถสร้างมันขึ้นมาใหม่ให้มีรูปลักษณ์ "Atlas" ได้มากขึ้น . ฟังก์ชันการตรวจจับนี้จะถูกทริกเกอร์ทุกครั้งที่ผู้ใช้กดปุ่มในอินพุตที่เกี่ยวข้อง:
function keyPressHandler() {
// คุณอาจปรับโครงสร้างส่วนนี้ใหม่เพื่อทำให้โค้ด 'Atlas like' มากขึ้น :-)
var PasswordStrength ={
ระดับ: ["สูง มันสูงจริงๆ" "ไม่เป็นไร" "ให้ตายเถอะ ไม่เป็นไร"]
ค่าระดับ: [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 ComposedKind = 0;
สำหรับ (var i = 0; i < this.Regex.length;i++)
-
var chars = pwd.match(this.Regex[i]);
ถ้า (ตัวอักษร != null)
-
StrengthValue += chars.length * this.Factor[i];
ประเภทที่แต่ง++;
-
-
ค่าความแข็งแกร่ง += this.KindFactor[ComposedKind];
กลับค่าความแรง;
-
PasswordStrength.StrengthLevel = ฟังก์ชั่น (pwd)
-
ค่า var = this.StrengthValue (pwd);
สำหรับ (var i = 0; i < this.LevelValue.length; i++)
-
ถ้า(ค่า >= this.LevelValue[i] )
กลับสิ่งนี้ระดับ [i];
-
-
// สิ้นสุดส่วนการรีแฟคเตอร์
$(_checkResultLabelID).innerHTML = PasswordStrength.StrengthLevel(this.control.element.value);
}
ในเวลาเดียวกัน คุณลักษณะ checkResultLabelID จะถูกเพิ่มให้กับพฤติกรรมนี้เพื่อระบุป้ายกำกับสำหรับแสดงผลการทดสอบ:
var _checkResultLabelID;
this.get_checkResultLabelID = ฟังก์ชั่น () {
กลับ _checkResultLabelID;
-
this.set_checkResultLabelID = ฟังก์ชั่น (ค่า) {
ถ้า (_checkResultLabelID != ค่า) {
_checkResultLabelID = ค่า;
this.raisePropertyChanged('checkResultLabelID');
-
}
คุณยังสามารถเพิ่มฟังก์ชันพิเศษอื่นๆ ได้อย่างง่ายดาย เช่น การเปลี่ยนสีพื้นหลังของข้อความแจ้งสำหรับการป้อนจุดแข็งต่างๆ เป็นต้น สำหรับซอร์สโค้ดที่สมบูรณ์ โปรดดูการดาวน์โหลดที่ส่วนท้ายของบทความนี้
ขั้นตอนในการทดสอบก็ง่ายมาก ขั้นแรก ให้เพิ่มการอ้างอิงถึงพฤติกรรมนี้ใน ScriptManager:
<atlas:ScriptManager runat="server" ID="ScriptManager1">
<สคริปต์>
<atlas:ScriptReference Path="PasswordStrengthCheckBehavior.js" />
</สคริปต์>
</atlas:ScriptManager>
จากนั้นเพิ่มอินพุตในหน้าเพื่อป้อนรหัสผ่าน (ประเภทไม่ได้ตั้งเป็นรหัสผ่านในโปรแกรมสาธิต) และช่วงเพื่อแสดงผลการทดสอบ:
<div>
ใส่รหัสผ่าน:
<input id="password" type="text" />
<span id="ผลลัพธ์"></span>
</div>
สุดท้ายนี้ Atlas Script จะเลื่อนระดับอินพุตข้างต้นไปยังตัวควบคุม Atlas และเพิ่มพฤติกรรมที่เราเพิ่งเขียน:
<script type="text/xml-script">
<เพจ xmlns:script=" http://schemas.microsoft.com/xml-script/2005 ">
<ส่วนประกอบ>
<textBox id="รหัสผ่าน">
<พฤติกรรม>
<passwordStrengthCheckBehavior checkResultLabelID="ผลลัพธ์" />
</พฤติกรรม>
</กล่องข้อความ>
</ส่วนประกอบ>
</หน้า>
</script>
มันง่ายมาก ดังต่อไปนี้ในเบราว์เซอร์:
รหัสผ่านแบบง่าย:
รหัสผ่านขนาดกลาง:
รหัสผ่านที่ซับซ้อน:
สามารถดาวน์โหลดซอร์สโค้ดและโปรแกรมตัวอย่างได้ที่นี่: