ASP.NET 2.0 中Login控件的使用

摘自:http://uglytroll.yculblog.com/post.1245791.html

[原创]ASP.NET2.0中的membership问题

UglyTroLL @ 2006-04-25 18:07                          
                             
研究了一天的问题,耗了半包烟后终于搞定,谢谢BAIDU让我搜到了一个QQ群,谢谢群里热心的大大Jacky,下面正题:
1、membership中的存储地址问题:
在ASP.NET2.0中用Createuserwizard默认注册的用户存储在.net2005的sql server2005 experss下,里面默认的一堆表名都是以aspnet_开头的,我们所存储的users信息就在aspnet_membership和aspnet_users下,如果我们想使用自己机器上所用数据库(如Sql server2000.access等)而不是。NET默认的2005的话就需要进行以下配置:
(1)、在.net freamework安装路径下(如: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215\CONFIG )找到machine.config文件进行编辑,找到  <connectionStrings>...........</connectionStrings>项,里面填加自己的connection string,如:    <add name="tjproject" connectionString="Data Source=IMIS-DCA970B8AA;Initial Catalog=tjproject;Integrated Security=True" />
后面继续查找<membership>等,参考代码:
   <membership>
     <providers>
       <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="tjproject" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Clear" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
     </providers>
   </membership>
   <profile>
     <providers>
       <add name="AspNetSqlProfileProvider" connectionStringName="tjproject" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
     </providers>
   </profile>
   <roleManager>
     <providers>
       <add name="AspNetSqlRoleProvider" connectionStringName="tjproject" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
       <add name="AspNetWindowsTokenRoleProvider" applicationName="/" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
     </providers>
   </roleManager>
在里面设置成员,角色,提供者的连接String,注意这里的connectionStringName要设置为先前connectionstring里面的name,不然跑的时候会报错
(2)设置web.config
同machine.config一样,只是注意这里的连接名不能和machine.config重名,而且在这里似乎不需要设置角色与providers,无须为他们填加代码,除非有特殊需要
存储位置问题在这里告一段落
2、如何设置membership中的密码存储规则:
如果大家注意看上面的代码,就会发现在connectionstring后面有一堆属性的设置,这些属性可以使我们做一些非常有趣的事情出来,下面对一些重要属性做下说明,其他可见msdn
enablePasswordRetrieval:是否允许成员检索自己的密码
enablePasswordReset:是否允许成员重置自己的密码
passwordFormat:密码存储格式,默认为hash,即存储在数据库中的密码是以哈希加密,防止别人进入数据库盗取密码。Clear为明文模式,其余请见MSDN
maxInvalidPasswordAttempts:用户输入错误的密码后最大重试次数,超过就封锁帐户
passwordAttemptWindow:锁定帐户的时间,分钟为单位
minRequiredPasswordLength:最小密码长度
minRequiredNonalphanumericCharacters:密码中必须的非字母数字字符的数目(出于安全性考虑,防止被暴力破解)
注意的是,这些设置必须同时在machine.config与web.config下设置才会在页面生效,设置不同的情况我没有测试,不知道会出现什么情况
做完这些设置后,用Createuserwizard创建用户时就会严格参照这些规则,可以以自己需要自定义存储规则
原文地址:https://www.cnblogs.com/kentyshang/p/420642.html