2.4 智能密码强度提示的PasswordStrength控件
智能密码强度提示功能是非常实用的一种密码提示功能,它能够告诉用户自己所输入密码的安全性的强弱,效果如图2.6所示。单个ASP.NET服务器端控件不能提供该功能。值得庆幸的是,ASP.NET AJAX Control Toolkit中的PasswordStrength控件能够实现智能密码强度提示的功能。

图2.6 智能密码强度提示效果图
声明PasswordStrength控件的语法类似如下:
<ajaxToolkit:PasswordStrength ID="PS" runat="server"
TargetControlID="TextBox控件的ID属性的值"
DisplayPosition="显示位置"
StrengthIndicatorType="强度提示方式"
PreferredPasswordLength="10"
PrefixText="Strength:"
TextCssClass="提示文本样式"
MinimumNumericCharacters="0"
MinimumSymbolCharacters="0"
RequiresUpperAndLowerCaseCharacters="false"
TextStrengthDescriptions="很差;差;一般;好;很好"
TextStrengthDescriptionStyles="样式1;样式2;样式3;样式4;样式5"
CalculationWeightings="50;15;15;20" />
另外,PasswordStrength控件包含多个常用属性,如TargetControlID、DisplayPosition、StrengthIndicatorType、HelpStatusLabelID等。具体说明如表2.4所示。
表2.4 PasswordStrength控件的常用属性及其说明
|
属 性 |
说 明 |
|
TargetControlID |
使用该控件的ASP.NET服务器端控件的ID值 |
|
HelpStatusLabelID |
显示帮助文本的Label控件的ID属性的值 |
|
DisplayPosition |
强度提示显示的位置 |
|
HelpHandlePosition |
显示帮助文本的Label控件的位置 |
|
StrengthIndicatorType |
强度提示的类型,可以为Text或BarIndicator |
|
PreferredPasswordLength |
密码的首选长度 |
|
PrefixText |
如果强度提示类型为Text,该属性指定提示文本的前缀 |
|
MinimumNumericCharacters |
数字字符的最小数量 |
|
MinimumSymbolCharacters |
特殊字符(symbol)的最小数量 |
|
RequiresUpperAndLowerCaseCharacters |
是否要求大小写混合形式 |
|
TextStrengthDescriptions |
强度提示的描述文本,它是一个以分号分隔的字符串列表 |
|
TextCssClass |
如果强度提示类型为Text,该属性指定提示文本的样式 |
|
BarBorderCssClass |
图提示的边框样式 |
|
BarIndicatorCssClass |
图提示的文本样式 |
|
HelpHandleCssClass |
帮助文本的Label控件的样式 |
|
TextStrengthDescriptionStyles |
以分号分隔的样式列表。每一种样式将应用于其对应的强度提示的文本 |
|
CalculationWeightings |
密码组成部分所占的比重,其值的格式为“A;B;C;D”。其中,A表示长度的比重,B表示数字的比重,C表示大写的比重,D表示特殊字符的比重。A、B、C、D四个值的和必须为100,默认值为“50;15;15;20” |
StrengthIndicatorType属性指定强度提示的类型,它的值可以为“Text”或“BarIndicator”。如果为“Text”,则使用文本显示提示信息;如果为“BarIndicator”,则使用图像显示提示信息。MinimumNumericCharacters和MinimumSymbolCharacters属性分别指定数字和特殊字符的最小数量。
TextStrengthDescriptions属性指定描述密码强度的字符串,它的值由分号(;)分隔。下述代码实例描述了5种强度(很差、差、一般、好和很好)的密码。
<ajaxToolkit:PasswordStrength ID="ps" runat="server"
TextStrengthDescriptions="很差;差;一般;好;很好"
……
/>
TextStrengthDescriptionStyles属性指定用于每一种强度提示信息的样式,它的值由分号(;)分隔。下述代码实例分别为5种强度指定了相应的样式。
<ajaxToolkit:PasswordStrength ID="ps" runat="server"
TextStrengthDescriptions="很差;差;一般;好;很好"
TextStrengthDescriptionStyles="样式1;样式2;样式3;样式4;样式5"
……
/>
CalculationWeightings属性指定密码组成的各个部分所占的比重,它的值的格式为“A;B;C;D”。其中,A表示长度的比重,B表示数字的比重,C表示大写的比重,D表示特殊字符的比重。
注意:CalculationWeightings属性中的A、B、C和D这4个值都必须为整数,且它们的和为100。该属性的默认值为“50;15;15;20”。
在下述代码实例中,PasswordStrength.aspx页面演示了为TextBox控件(ID属性的值为tbInput)提供了智能密码强度提示的功能。PasswordStrength控件的ID值为psInput。该控件设置数字字符和特殊字符的最小数量都为2,密码组成的各个部分所占的比重(CalculationWeightings属性的值)为“40;20;20;20”。
<!-- AjaxTextInput/PasswordStrength.aspx页面 -->
<%@ Page Language="C#" StylesheetTheme="ASPNETAjaxWeb" %>
<head runat="server"><title>智能密码强度提示</title></head>
<asp:ScriptManager ID="sm" runat="server"></asp:ScriptManager><br />
<asp:TextBox ID="tbInput" runat="server" SkinID="tbSkin"
Width="300px"></asp:TextBox><br />
<asp:Label ID="lbHelp" runat="server"></asp:Label>
<ajaxToolkit:PasswordStrength ID="psInput" runat="server"
TargetControlID="tbInput" DisplayPosition="RightSide"
TextCssClass="PasswordStrengthText" HelpHandlePosition="BelowLeft"
HelpStatusLabelID="lbHelp" MinimumNumericCharacters="2"
MinimumSymbolCharacters="2" PreferredPasswordLength="10"
RequiresUpperAndLowerCaseCharacters="true"
StrengthIndicatorType="Text"
TextStrengthDescriptions="很差;差;一般;好;很好"
CalculationWeightings="40;20;20;20"></ajaxToolkit:PasswordStrength>
上述代码实例的执行结果如图2.7所示。

图2.7 演示智能密码提示的功能
注意:为了更加清楚地说明智能密码提示的效果,特意没有把tbInput控件的TextMode属性的值设置为Password。





