当前位置: 代码迷 >> ASP.NET >> 关于注册用户时密码的校验解决方案
  详细解决方案

关于注册用户时密码的校验解决方案

热度:2314   发布时间:2013-02-25 00:00:00.0
关于注册用户时密码的校验
Microsoft Visual Studio 2005中,我依次进行如下操作:
点击菜单“文件”,“新建”,“网站”,选择“个人网站初学者工具包”,点击“确定”,
然后运行,点击浏览器页面右上角的“注册”链接进行注册,输入完用户各信息后,点击“创建用户”按钮,这时提示“密码最短长度为 7,其中必须包含以下非字母数字字符: 1。”。

接着我做如下修改:
在web.config文件<system.web>中添加如下代码:
<membership>
  <providers>
  <add name="AspNetSqlMembershipProvider"
  type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
  connectionStringName="LocalSqlServer"
  enablePasswordRetrieval="false"
  enablePasswordReset="true"
  requiresQuestionAndAnswer="true"
  applicationName="/"
  requiresUniqueEmail="false"
  passwordFormat="Hashed"
  maxInvalidPasswordAttempts="5"
  minRequiredPasswordLength="7"
  minRequiredNonalphanumericCharacters="1"
  passwordAttemptWindow="10"
  passwordStrengthRegularExpression="" />
  </providers>
</membership>

这时再次运行,点击浏览器页面右上角的“注册”链接进行注册,输入完用户各信息后,点击“创建用户”按钮,仍然提示“密码最短长度为 7,其中必须包含以下非字母数字字符: 1。”。

退出运行,做如下修改:
将minRequiredPasswordLength="7"改为minRequiredPasswordLength="5",将minRequiredNonalphanumericCharacters="1"改为minRequiredNonalphanumericCharacters="0",
再次运行,点击浏览器页面右上角的“注册”链接进行注册,此时程序报错如下:


“/PersonalSite”应用程序中的服务器错误。
--------------------------------------------------------------------------------

配置错误 
说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。 

分析器错误信息: 项“AspNetSqlMembershipProvider”已添加。

源错误: 


行 30: <membership>
行 31: <providers>
行 32: <add name="AspNetSqlMembershipProvider"
行 33: type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
行 34: connectionStringName="LocalSqlServer"
 

源文件: C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\WebSites\PersonalSite\web.config 行: 32 


--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.1433; ASP.NET 版本:2.0.50727.1433 


请问有谁知道这是怎么回事?多谢!



------解决方案--------------------------------------------------------
密码最短长度为 7,其中必须包含以下非字母数字字符: 1

这个提示本身是错误的。
当然出这个提示跟你设置也有关。

最近正在研究 asp.net 2.0 新增的login控件,发现系统默认的密码安全性要求较高,即“密码最短长度为 7,其中必须包含以下非字母数字字符: 1。”,对于一般王展来说没有必要(连windows2003sever都没有默认要求这样复杂的密码)。一些参考资料提供的修改方法是在machine.config里面修改。但是除非你有主机的管理权,否则是不能修改的。所以还是建议到web.config文件里面修改。

方法是在web.config的<system.web>节点里加入子标签:


<membership>
<providers>
<remove name="AspNetSqlMembershipProvider"/>
<add name="AspNetSqlMembershipProvider"
type=" System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="LocalSqlServer"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
applicationName="/"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordStrengthRegularExpression="" />
</providers>
</membership>




对关键的属性做一下说明:

connectionStringName 数据库连接。这个要在web.config设置
enablePasswordRetrieval 获得一个值,指示当前成员资格提供程序是否配置为允许用户检索其密码。
enablePasswordReset 获得一个值,指示当前成员资格提供程序是否配置为允许用户重置其密码。
requiresQuestionAndAnswer 获取一个值,该值指示默认成员资格提供程序是否要求用户在进行密码重置和检索时回答密码提示问题。
applicationName 获取或设置应用程序的名称。
requiresUniqueEmail 指示用户在创建用户时是否必须提供唯一的电子邮件地址值。
passwordFormat 指示在成员资格数据存储区中存储密码的格式。下面有详细说明
maxInvalidPasswordAttempts 获取锁定成员资格用户前允许的无效密码或无效密码提示问题答案尝试次数。
minRequiredPasswordLength 获取密码所要求的最小长度。
minRequiredNonalphanumericCharacters 获取有效密码中必须包含的最少特殊字符数。
passwordAttemptWindow 获取在锁定成员资格用户之前允许的最大无效密码或无效密码提示问题答案尝试次数的分钟数。

对PasswordFormat 的详细说明
属性指示存储密码的格式。密码可以采用 Clear、Encrypted 和 Hashed 密码格式存储。Clear 密码以明文形式存储,这可以提高存储和检索密码的性能,但安全性较差,当数据源安全性受到威胁时此类密码很容易被读取。Encrypted 密码在存储时进行了加密,可以在比较或检索密码时进行解密。此类密码在存储和检索时需要进行额外的处理,但比较安全,在数据源的安全性受到威胁时不容易被获取。Hashed 密码在存储到数据库时使用单向哈希算法和随机生成的 salt 值进行哈希处理。在验证某一密码时,将用数据库中的 salt 值对该密码进行哈希计算以进行验证。无法检索哈希密码。
  相关解决方案