Membership的学习
利用Membership时可以很方便地对各种网站进行用户管理和角色管理,而不需要像原来那样写大量的代码来实现。
使用membership有三个步骤:
(1).配置数据库
首先从开始菜单,运行,键入cmd,cd 进入.netframework2.0目录,一般位于C盘下的WINDOWS目录下,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727找到aspnet_regsql.exe,运行它。就会弹出一个ASP.NET SQL Server安装向导,按照提示一步一步配置完成。打开SQL Server 2005管理工具,就会看到数据库中多了一个aspnetdb的数据库。这就是ASP.NET Membership框架进行用户及角色管理所要使用的数据库。而这个数据库一切都是在配置完成后自动生成的。
(2).配置网站的webconfig文件
配置这个webconfig文件,尤其要注意字母的大小写问题及标签的封装问题,因为XML文件对字母的大小写是敏感的。
首先是添加一个用于连接数据库的字符串:
<connectionStrings>
<add name="loginstrings" connectionString="Password=xc;Persist Security Info=True;User ID=sa;Initial Catalog=aspnetdb;Data Source=XC-SVR" providerName="System.Data.SqlClient"></add>
</connectionStrings>
<add name="loginstrings" connectionString="Password=xc;Persist Security Info=True;User ID=sa;Initial Catalog=aspnetdb;Data Source=XC-SVR" providerName="System.Data.SqlClient"></add>
</connectionStrings>
接着是将网站的认证模式改为表单认证以及给用户授权:
<authentication mode="Forms" ><forms loginUrl="Login.aspx" defaultUrl="Register/Regester.aspx"></forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
最后是在<System.web></System.web>节点内添加membership节点内添加相应的设置。具体设置及几个可选参数的含义如下表所示;
名称 | 说明 |
name | providers名称 |
type | 类型,用SQL是为:System.Web.Security.SQLMembershipProvider |
connectionStringName | 连接字符串名称 |
enablePasswordRetrieval | 是否允许用户检索其密码(没用的东西,跟机制有冲突)通常False |
enablePasswordReset | 是否允许用户重置密码 |
requiresQuestionAndAnswer | 是否要求用户在进行密码重置和检索时回答密码提示问题 |
applicationName | 标识应用程序特有的用户,相同的用户名可对应于指定了applicationName的多个Asp.Net应用程序 |
requiresUniqueEmail | 是否要求用户Email唯一 |
passwordFormat | 密码加密方式,三种值:clear-->不加密,Hashed-->哈希加密方式,Encrypted |
maxInvalidPasswordAttempts | 最多尝次登陆次数,失败则锁定 |
minRequiredPasswordLength | 密码最短长度 |
minRequiredNonalphanumericCharacters | 密码中特殊字符个数 |
passwordAttemptWindow | 最大尝次登陆时间数,单位:分 |
passwordStrengthRegularExpression | 指定密码格式的正则表达式 |
Web.config中添加时如下:
<membership userIsOnlineTimeWindow="20">
<providers>
<add connectionStringName="loginstrings" applicationName="/"
description="" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0"
enablePasswordRetrieval="false" enablePasswordReset="false"
requiresQuestionAndAnswer="false" passwordFormat="Hashed" name="AspNetSqlProvider"
type="System.Web.Security.SqlMembershipProvider" />
</providers>
</membership>