Microsoft Office SharePoint Server 2007 Forms Authentication
本文将演示如何在MOSS2007中实现表单验证.
创建ASP.NET 2.0 表单验证数据库 创建ASP.NET 2.0数据库
使用Microsoft .NET 2.0提供的工具aspnet_regsql.exe来创建一个名为AspNetDb数据库:
在Visual Studio 2005命令提示中执行 asp_regsql –A all –E.
在SQL Server 2005中查看刚才创建好的数据库.
配置成员资格提供程序和角色提供程序
创建好数据库之后,需要在数据库中添加用户,最简单的方法是利用ASP.NET网站管理工具.
在Visual Studio 2005中创建一个ASP.NET站点.
打开项目中的web.config文件,如果项目中没有web.config文件的话,可以手动添加一个移动Web配置文件.
在<configuration>节点内添加<connectionStrings>节点:
<connectionStrings>
<remove name="AspNetSqlProvider" />
<add name="AspNetSqlProvider"
connectionString="server=SQL服务器名称; database=aspnetdb; Trusted_Connection=True" />
</connectionStrings>
接着指定membership和role的提供程序,在<system.web>节点内添加<membership>节点和<roleManager>节点:
<!--Membership Provider-->
<membership defaultProvider="AspNetSqlMembershipProvider">
<providers>
<remove name="AspNetSqlMembershipProvider" />
<add connectionStringName="AspNetSqlProvider"
passwordAttemptWindow="10"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
applicationName="/"
requiresUniqueEmail="false"
passwordFormat="Hashed"
description="Stores and retrieves membership data from the Microsoft SQL Server database"
name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
<!--Role Provider-->
<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
<providers>
<remove name="AspNetSqlRoleProvider" />
<add connectionStringName="AspNetSqlProvider"
applicationName="/"
description="Stores and retrieves roles data from the local Microsoft SQL Server database"
name="AspNetSqlRoleProvider"
type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
以上的步骤完成之后,选择Visual Studio 2005菜单中的网站 > ASP.NET配置:
点击安全:
点击选择身份验证类型:
选择通过Internet,点击完成.
创建用户
在上一步返回的页面中选择创建用户:
填写用户信息后点击创建用户:
点击继续来创建另外一个用户Blueheart.
最后我们来确定一下web.config中的成员资格和角色提供程序是否正确,在ASP.NET网站管理工具中点击提供程序选项卡:
点击为每项功能选择不同的提供程序(高级):
这张页面列出了我们在web.config中指定的提供程序,点击测试来确认是否能成功连接到数据库:
创建Web应用程序和网站集 创建第一个Web应用程序
打开SharePoint管理中心网站 > 应用程序管理 > 创建或扩展Web应用程序 > 新建Web应用程序:
· 端口:8001
· 验证提供程序:NTLM
· 允许匿名访问:否
下文中简称此Web应用程序为8001站点.
创建网站集
Web应用程序创建完成之后,点击页面中的创建网站集链接创建一个网站集:
l 模板选择: 发布门户
l 网站地址:/
创建第二个Web应用程序
打开SharePoint管理中心网站 > 应用程序管理 > 创建或扩展Web应用程序 > 扩展现有Web应用程序:
· 端口:8002
· 验证提供程序:NTLM
· 允许匿名访问:是
· 负载平衡URL区域:Internet
下文中简称此Web应用程序为8002站点.
配置Web应用程序与ASP.NET 2.0表单验证数据库的连接 配置Web应用程序
打开8001站点的web.config文件, 添加连接字符串,membership和role提供程序并保存.
如果不知道web.config文件的路径,可以打开Internet信息服务(IIS)管理器,找到8001站点,查看其属性,打开主目录选项卡,在本地路径处可以看到其存放位置:
以同样的方法修改8002站点的web.config文件.
配置SharePoint 管理中心
在SharePoint管理中心的web.config文件中添加连接字符串,membership提供程序和role提供程序,按照之前的方法添加过后,还需要做一步必要的修改,将<roleManager>的defaultProvider属性的值修改为AspNetWindowsTokenRoleProvider.
在Web应用程序中启用表单验证
打开SharePoint管理中心网站 > 应用程序管理 > 验证提供程序:
确定当前Web应用程序是8001站点,点击Internet.
在编辑验证页面做以下修改并保存:
· 验证类型:表单
· 启用匿名访问:是
· 成员身份提供程序名称:AspNetSqlMembershipProvider
· 角色管理器提供名称:AspNetSqlRoleProveder
打开8002站点,显示登录页面:
下面向网站中添加用户来映射到自定义数据库中的用户.
打开8001站点 > 网站操作 > 网站设置 > 人员和组 > 新建:
l 用户名:blueheart
l 授予权限:访问者
下面来测试一下,在刚才打开的8002站点登录页面,输入blueheart和密码,登录成功:
因为我们只授予blueheart访问者的权限,所以点击页面左侧任务列表中的启用匿名访问会被拒绝访问:
启用匿名访问
打开SharePoint管理中心 > Web应用程序的策略:
确定当前Web应用程序是8001站点,点击添加用户:
区域选择Internet > 下一步:
l 用户:windie
l 权限:完全控制
现在用windie登录8002站点,点击页面左侧任务列表中的启用匿名访问(另一种途径:网站操作 > 网站设置 > 修改所有网站设置 > 高级权限 > 设置 > 匿名访问):
设置匿名用户可访问整个网站.
现在从8002站点注销,测试匿名访问是否正常工作:
配置个别网站的权限
采用发布网站模板的网站集中默认包含一个新闻发布网站,新闻发布网站继承网站集的权限,也就是说启用匿名访问之后,匿名用户也可以访问这个新闻发布网站.
本节演示如何设置网站集下的个别网站的权限:
打开8001站点 > 网站操作 > 管理内容和结构:
在新闻发布节的菜单中选择高级权限,在权限:新闻发布页面中选择操作 > 编辑权限:
在弹出来的对话框中点击确定:
打开权限:新闻发布页面中新出现的设置菜单 > 匿名访问,选择匿名用户可访问的内容为无.
现在匿名访问8002站点,发现新闻发布网站已经从网站集的导航栏中隐藏了:
单独设置权限之前
单独设置权限之后
Comments