ASP.NET 成员资格-配置

作者:vkvi 来源:ITPOW(原创) 日期:2008-7-28

使用了前面的,我们可能会发现一些地方不如我们的意,比如:数据库连接名不是我们想要的,创建用户时密码必须限定一个非字母数字字符,创建用户时必须输入找回密码的问题和答案……要改变这些,就得通过配置文件来改。

打开 machine.config(常常位于类似 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG 的地方),可以找到类似如下代码:

<configuration>
  <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=""/>

我们发现原来上面的规定都是在这里定义的,我们把这段代码拷贝到应用程序的 web.config 中,然后更改相应的值,就可以配置我们的成员资格了。

注意:拷贝上面的代码后可能需要添加 <remove name="AspNetSqlMembershipProvider"/> 以及 XML 结束标签(</providers> 等)。

说说 applicationName,一般来说每个应用程序都应使用不同的 applicationName 属性值,除非各个应用程序之间要共享用户(前提是共用一个成员资格数据库)。

说说 passwordFormat,可选值有:Clear、Encrypted、Hashed。

  • Clear 是明文,实际使用中应该避免使用该值。
  • Encrypted 是加密,需要加密密钥,可以还原加密的密码为明文,但由于要提供密钥,遇到密钥丢失或需要更换密钥时,很不方便。
  • Hashed 由随机盐和新密码计算一个单向的散列值,最安全,也是默认值。

membership 还有个属性 defaultProvider,它告诉登录控件等使用哪个成员资格提供程序,当我们提供了多个 provider 时,指明该属性值,以明确使用哪个 provider。登录控件等有个属性是 ProviderName,它能够覆盖 defaultProvider 值,但绝大多数情况下,一个应用程序都是使用一个 provider,所以不需要使用 ProviderName,明确 defaultProvider 就可。

相关文章