玩转Membership之三
----- web.config个性化Membership
默认的Membership配置信息和数据库链接字符串存储在machine.config中。
路径如下:C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/CONFIG
machine.config中对Membership的配置关键代码如下:
<
connectionStrings
>
< add name ="LocalSqlServer" connectionString ="data source=.SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName ="System.Data.SqlClient" />
</ connectionStrings >
< 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 >
< add name ="LocalSqlServer" connectionString ="data source=.SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName ="System.Data.SqlClient" />
</ connectionStrings >
< 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 >
配置Membership处理程序常用的参数如下:
name
指定Membership处理程序的名字
type
指定Membership处理程序的类型,ASP.NET提供了两种类型,一种是SqlMembershipProvider,另外一种是ActiveDirectoryMembershipProvider。后者使用活动目录服务器的方式进行验证并提供Membership的相应功能。你也可以使用第三方提供的类型进行扩展
applicationName
指定web应用程序的名称。如果你多个web应用程序使用了同一个Membership数据库的话,这个属性就特别有用。这个时候你可以给每一个web应用程序一个不同的名字,那么就可以将不同web应用程序的数据区分开来。
connectionStringName
指定使用的连接字符串的名字
description
针对MembershipProvider的描述信息,可选
passwordFormat
设置密码存储在数据库中的方式,一共有三种方式,第一种是:Clear,密码不加密以明文的方式存储在数据库中;第二种方式是Encrypted,使用指定的computer key对密码进行加密存储;第三种方式是Hashed,密码经过hash转换之后进行存储,经过hash处理之后的密码同样也是加密的,然而和第二种方式不同的是,它是不可逆的,也就是说经过hash处理之后的密码是无法获取到其明文的,只能被重置。系统默认方式是第三种hashed方式
minRequiredPasswordLength
指定密码的最小长度
minRequiredNonalphanumericCharacters
指定密码至少要包含非数字和字母的字符个数
maxInvalidPasswordAttempts
指定用户登陆时输入错误密码的次数上限,超过这个数目,帐户将被锁定。默认是5
passwordAttemptWindow
指定因用户连续输入错误密码而被锁定后的重置时间间隔。比如说,将passwordAttemptWindow设置为30分钟,那么30分钟后,被锁定的帐号将被解锁
enablePasswordReset
设置密码是否可以被重置
enablePasswordRetrieval
设置密码是否可以被取回。比如在忘记密码的情况下,可以通过邮件的方式取回密码。需要注意的是,如果密码通过hash进行加密,则不能被取回,只能重置
requiresQuestionAndAnswer
是否需要设置安全问题和答案
requiresUniqueEmail
设置用户的邮箱是否需要唯一
一般情况下,尽量不要去改动machine.config,我们针对应用程序做的配置,可以在web.config中进行更改,如下:
<
membership
defaultProvider
="MyMembershipProvider"
>
< providers >
< add
name ="MyMembershipProvider"
type ="System.Web.Security.SqlMembershipProvider"
connectionStringName ="LocalSqlServer"
requiresQuestionAndAnswer ="false"
minRequiredPasswordLength ="1"
minRequiredNonalphanumericCharacters ="0" />
</ providers >
</ membership >
< providers >
< add
name ="MyMembershipProvider"
type ="System.Web.Security.SqlMembershipProvider"
connectionStringName ="LocalSqlServer"
requiresQuestionAndAnswer ="false"
minRequiredPasswordLength ="1"
minRequiredNonalphanumericCharacters ="0" />
</ providers >
</ membership >
需要注意的是,上面的name、type和connectionStringName是必须的
本部分内容我们通过在Web.config中重写< membership>标签,实现个性化用户注册的功能
具体操作过程请参看视频演示,下面是视频演示的关键截图,如果您对此部分内容已经了然于胸,可以跳过本部分的学习,谢谢
1.Machine.config一览
2.web.config中的设置
3.注册新用户测试
玩转Membership视频之三:web.config个性化Membership(第1部分,共4部分)
玩转Membership视频之三:web.config个性化Membership(第2部分,共4部分)
玩转Membership视频之三:web.config个性化Membership(第3部分,共4部分)
玩转Membership视频之三:web.config个性化Membership(第4部分,共4部分)