【转】vs2005中的成员资格管理

花了一个下午终于搞明白了,运行的时候总是InvalidPassword开始搞不清楚怎么回事原来是这样的:在用ASP.NET 2.0的CreateUserWizard的控件时,有个很郁闷的问题:默认的注册密码需要密码长度为7且最少一个非字母和数字字符. 例如"!", "@", "_"等。所以一直报InvalidPassword错误。
下面就把成员资格管理的详细实现步骤总结如下:
第一步:由于没有aspnetdb.mdf数据库,因此得先建立一个,这个可以通过aspnet_regsql.exe完成,(由于本人机器上仅安装SQLSERVER2005,而没有装SQLSERVER  EXPRESS,不知道只装有SQL2000的行不?我个人感觉应该可以)该程序位于C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\下。运行它之后会弹出 [图1] 的窗口:

按"Next >"按钮,进入图2

在图2中,我们会发现除了有配置数据库外,还有删除数据库的功能,以后说不定可以派上用场,现在自然选Configure SQL Server for application services,按"Next >"按钮,进入图3

现在进入数据库选择界面,如果SQLSERVER就安装在本地的话,可以不用改任何东西,直接按"Next >"。这里的Database显示为<default>,表示默认数据库名为aspnetdb,你也可以根据自己的需要更改名称。


最后进入图4,现在按"Next >"就可以开始安装数据库了,当Finish按钮亮起时,表明数据库安装成功,一切顺利!

第二步:接下来是设置数据库连接字符串(就是加到Web.config配置文件里面的)。
<connectionStrings>
        <add name="SqlServices" connectionString="Data Source=(自己的数据库服务器名称了);Initial Catalog=aspnetdb;Integrated Security=True"
            />
 </connectionStrings>
(这个配置自己也不用自己写的,如果添加aspnetdb数据库成功的话,那拖一个Sqldatasource控件连接这个数据库当然要选择添加连接字符串这一项的,配置好后会自动在Web.config里面添加连接字符串,然后把这个控件删除就ok了)


第三步:也是最关键的一步
1:如果你想要你所做的全部的应用程序的密码都不受第一步所说的限制的话,那么你就要去machine.config文件(在如下位置:C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/CONFIG)里面该如下的内容:
 <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>
里面有两个属性,一个是  minRequiredPasswordLength,意思是最长密码,默认为7,你可以设置为6位或者其他;另一个是minRequiredNonalphanumericCharacters,默认为1,意思是至少有一个非字母字符,只要把它改成0就可以了。

2:假如只是对某一个程序,只要修改本程序的web.config的值就ok了
修改如上,把上面的代码插入在<system.web>下面就ok了。
<system.web>
      <authentication mode="Forms">
        <forms loginUrl="Default.aspx"></forms>
      </authentication>
      <membership defaultProvider="AspNetSqlMembershipProvider" userIsOnlineTimeWindow="20">
        <providers>
          <remove name="AspNetSqlMembershipProvider"/>
          <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider"
                connectionStringName="SqlServices"
                enablePasswordRetrieval="false"
                enablePasswordReset="true"
                requiresQuestionAndAnswer="true"
                applicationName="/"
                requiresUniqueEmail="false"
                passwordFormat="Hashed"
                maxInvalidPasswordAttempts="5"
                minRequiredPasswordLength="6"
                minRequiredNonalphanumericCharacters="0"
                passwordAttemptWindow="10"
                passwordStrengthRegularExpression="" />
        </providers>
      </membership>


注意黄色加亮的部分,首先要添加<remove name="AspNetSqlMembershipProvider"/>
我感觉这应该是移除machine.config里面的配置的影响,然后添加自己的配置字节<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider>.

OK做完这几步就配置好你的成员资格管理了,可以放心大胆的编程了,还等什么那,马上试试吧!
posted @ 2009-04-16 13:28  sunshine^^  阅读(211)  评论(0编辑  收藏  举报