摘要:
本文介绍了怎么在ASP.NET 2.0中使用Membership新特性,并且介绍了怎么两种不同的Membership的Provider:ActiveDirectoryMembershipProvider和SqlMembershipProvider,前者是基于微软活动目录服务存储用户信息的,或者是基于SQL SERVER存储的。2.0中的这个新机制大大减少了站点用户认证模块的代码量。
目录:
学习目的
使用ActiveDirectoryMembershipProvider
使用SqlMembershipProvider
ActiveDirectoryMembershipProvider的一些设置参数
SqlMembershipProvider的一些设置参数
Membership 的一些API
学会使用Membership进行表单认证
学会设置ActiveDirectoryMembershipProvider
学会使用ActiveDirectoryMembershipProvider建立认证用户
学会设置SqlMembershipProvider
学会建立SQL SERVER Membership数据库
学会使用SqlMembershipProvider建立认证用户
使用ActiveDirectoryMembershipProvider
如果用户信息是存储在活动目录中,而你的内网程序又因为防火墙或者需要适应不同的浏览器等原因不能使用windows集成认证的话,这个时候你可以选择使用ActiveDirectoryMembershipProvider实现表单认证
基本的步骤如下
按照以下步骤来用ActiveDirectoryMembershipProvider实现asp.net程序的用户表单认证
1、配置表单认证
2、配置ActiveDirectoryMembershipProvider
3、建立用户
4、认证用户
1、配置表单认证
要实现表单认证需要设置<authentication>的mode属性为"Forms",然后按照下面的例子配置web.config文件
<authentication mode="Forms">
<forms loginUrl="Login.aspx"
protection="All"
timeout="30"
name="AppNameCookie"
path="/FormsAuth"
requireSSL="false"
slidingExpiration="true"
defaultUrl="default.aspx"
cookieless="UseCookies"
enableCrossAppRedirects="false"/>
</authentication>
· loginUrl 指向登录页面,你需要把它放在支持SSL的目录下
· Protection 设置成"All"表示为认证凭据同时启用数据来源验证和加密
· Timeout 指定了认证的生存时间
· name and path are set to unique values for the current application.
· requireSSL 设置成"false"表示关闭cookie的SSL加密
· slidingExpiration 如果设置成"true"的话,每次访问过期时间将会重置
· defaultUrl 就是设置程序的首页
· cookieless 设置成"UseCookies"表示使用cookie来传递认证票据
· enableCrossAppRedirects 设置成"false"表示程序不接受外部的请求
按照下面的例子为<authentication> 增加<authorization>块,表明只有登录过的用户才能进入程序否则会被转到前面loginUrl设置的页面
<authorization>
<deny users="" />
<allow users="*" />
</authorization>
2、配置ActiveDirectoryMembershipProvider
按照下面的例子配置ActiveDirectoryMembershipProvider
<connectionStrings>
<add name="ADConnectionString"
connectionString=
"LDAP://domain.testing.com/CN=Users,DC=domain,DC=testing,DC=com" />
</connectionStrings>
<system.web>
...
<membership defaultProvider="MembershipADProvider">
<providers>
<add
name="MembershipADProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web,
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="ADConnectionString"
connectionUsername="<domainName>\administrator"
connectionPassword="password"/>
</providers>
</membership>
...
</system.web>
前面的代码为<providers>添加<add>子节点来为membership指定ActiveDirectoryMembershipProvider,活动目录中存储用户信息的连接字符串如下格式LDAP:// server/userdn,
· server 是活动目录服务器的IP或者名字
· userdn 是活动目录的DN,格式是/CN=Users然后是逗号加上逗号分割开的域名,比如域名是domain.testing.com,连接字符串就是