王朝网络
分享
 
 
 

使用ASP.NET Atlas开发检测密码强度的自定义Behavior

王朝asp·作者佚名  2008-06-01
宽屏版  字体: |||超大  

作者:Dflying Chen (http://dflying.cnblogs.com/ )

本文源于维生素C.net的一篇文章利用数学方法来大大降低一个逻辑判断实现的难度的例子。检测代码来自THIN的检验密码强度的JS类。

Atlas中提供了客户端javaScript强大的面向对象功能,这几天看到了上述二位的帖子,觉得这个功能需求在日常开发中还是很常见的。晚上闲来无事,将上述功能封装为Atlas中的Behavior,以方便重用。关于Atlas的Behavior,请参考:在asp.net Atlas中创建自定义的Behavior。

按照在ASP.NET Atlas中创建自定义的Behavior这篇文章的五个自定义步骤,很容易写出了这个Behavior。其中最重要的部分为检验密码强度的算法,这里我偷了个懒,只是简单的将THIN的代码完全Copy过来(兄弟不要骂我-_-b),有心的朋友可以将它重构成更“Atlas”的样子。这个检测函数将在每次用户在相应的input中按键时被触发:

function keyPRessHandler() {

// you may refactor this part to make the code more 'Atlas like' :-)

var PassWordStrength ={

Level : ["高,实在是高","还行啦","靠,这样也行"],

LevelValue : [30,20,0],//强度值

Factor : [1,2,5],//字符加数,分别为字母,数字,其它

KindFactor : [0,0,10,20],//密码含几种组成的加数

Regex : [/[a-zA-Z]/g,/\d/g,/[^a-zA-Z0-9]/g] //字符正则数字正则其它正则

}

PasswordStrength.StrengthValue = function(pwd)

{

var strengthValue = 0;

var ComposedKind = 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];

ComposedKind ++;

}

}

strengthValue += this.KindFactor[ComposedKind];

return strengthValue;

}

PasswordStrength.StrengthLevel = function(pwd)

{

var value = this.StrengthValue(pwd);

for(var i = 0 ; i < this.LevelValue.length ; i ++)

{

if(value >= this.LevelValue[i] )

return this.Level[i];

}

}

// end of the refactoring section

$(_checkResultLabelID).innerHTML = PasswordStrength.StrengthLevel(this.control.element.value);

}

同时在这个Behavior中添加了属性checkResultLabelID,用来指定显示检验结果的Label:

var _checkResultLabelID;

this.get_checkResultLabelID = function() {

return _checkResultLabelID;

}

this.set_checkResultLabelID = function(value) {

if (_checkResultLabelID != value) {

_checkResultLabelID = value;

this.raisePropertyChanged('checkResultLabelID');

}

}

您也可以很方便的添加一些更花哨的功能,例如对于不同强度的输入,提示文字的背景颜色有所改变等。完整的源代码请参考本文后面的下载。

测试的步骤也很简单,首先在ScriptManager中添加这个Behavior的引用:

<atlas:ScriptManager runat="server" ID="ScriptManager1">

<Scripts>

<atlas:ScriptReference Path="PasswordStrengthCheckBehavior.js" />

</Scripts>

</atlas:ScriptManager>

然后在页面上添加一个input,用来输入密码(演示程序中没有设定type为password),和一个span,用来显示检验结果:

<div>

Input a password:

<input id="password" type="text" />

<span id="result"></span>

</div>

最后,Atlas Script中将上面的input提升为Atlas控件,并加入我们刚刚写好的Behavior:

<script type="text/xml-script">

<page xmlns:script="http://schemas.microsoft.com/xml-script/2005">

<components>

<textBox id="password">

<behaviors>

<passwordStrengthCheckBehavior checkResultLabelID="result" />

</behaviors>

</textBox>

</components>

</page>

</script>

就是这么简单,浏览器中如下:

简单密码:

中等密码:

复杂密码:

源代码以及示例程序可以在此下载:http://www.cnblogs.com/Files/dflying/PasswordStrengthCheckBehaviorDemo.zip

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有