MOSS2007中实现表单验证

MOSS2007中实现表单验证

转自阿喜的Spaces
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.

clip_image002

在SQL Server 2005中查看刚才创建好的数据库.

clip_image004

配置成员资格提供程序和角色提供程序

创建好数据库之后,需要在数据库中添加用户,最简单的方法是利用ASP.NET网站管理工具.

在Visual Studio 2005中创建一个ASP.NET站点.

clip_image006

打开项目中的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配置:

clip_image008

点击安全:

clip_image010

点击选择身份验证类型:

clip_image012

选择通过Internet,点击完成.

创建用户

在上一步返回的页面中选择创建用户:

clip_image014

填写用户信息后点击创建用户:

clip_image016

clip_image018

点击继续来创建另外一个用户Blueheart.

最后我们来确定一下web.config中的成员资格和角色提供程序是否正确,在ASP.NET网站管理工具中点击提供程序选项卡:

clip_image020

点击为每项功能选择不同的提供程序(高级):

clip_image022

这张页面列出了我们在web.config中指定的提供程序,点击测试来确认是否能成功连接到数据库:

clip_image024

创建Web应用程序和网站集
创建第一个Web应用程序

打开SharePoint管理中心网站 > 应用程序管理 > 创建或扩展Web应用程序 > 新建Web应用程序:

· 端口:8001

· 验证提供程序:NTLM

· 允许匿名访问:

下文中简称此Web应用程序为8001站点.

创建网站集

Web应用程序创建完成之后,点击页面中的创建网站集链接创建一个网站集:

l 模板选择: 发布门户

l 网站地址:/

clip_image026

创建第二个Web应用程序

打开SharePoint管理中心网站 > 应用程序管理 > 创建或扩展Web应用程序 > 扩展现有Web应用程序:

· 端口:8002

· 验证提供程序:NTLM

· 允许匿名访问:

· 负载平衡URL区域:Internet

下文中简称此Web应用程序为8002站点.

配置Web应用程序与ASP.NET 2.0表单验证数据库的连接
配置Web应用程序

打开8001站点的web.config文件, 添加连接字符串,membershiprole提供程序并保存.

如果不知道web.config文件的路径,可以打开Internet信息服务(IIS)管理器,找到8001站点,查看其属性,打开主目录选项卡,在本地路径处可以看到其存放位置:

clip_image028

以同样的方法修改8002站点的web.config文件.

配置SharePoint 管理中心

在SharePoint管理中心的web.config文件中添加连接字符串,membership提供程序和role提供程序,按照之前的方法添加过后,还需要做一步必要的修改,将<roleManager>defaultProvider属性的值修改为AspNetWindowsTokenRoleProvider.

在Web应用程序中启用表单验证

打开SharePoint管理中心网站 > 应用程序管理 > 验证提供程序:

clip_image030

确定当前Web应用程序是8001站点,点击Internet.

编辑验证页面做以下修改并保存:

· 验证类型:表单

· 启用匿名访问:

· 成员身份提供程序名称:AspNetSqlMembershipProvider

· 角色管理器提供名称:AspNetSqlRoleProveder

打开8002站点,显示登录页面:

clip_image032

下面向网站中添加用户来映射到自定义数据库中的用户.

打开8001站点 > 网站操作 > 网站设置 > 人员和组 > 新建:

l 用户名:blueheart

l 授予权限:访问者

下面来测试一下,在刚才打开的8002站点登录页面,输入blueheart和密码,登录成功:

clip_image034

因为我们只授予blueheart访问者的权限,所以点击页面左侧任务列表中的启用匿名访问会被拒绝访问:

clip_image036

启用匿名访问

打开SharePoint管理中心 > Web应用程序的策略:

确定当前Web应用程序是8001站点,点击添加用户:

clip_image038

区域选择Internet > 下一步:

l 用户:windie

l 权限:完全控制

现在用windie登录8002站点,点击页面左侧任务列表中的启用匿名访问(另一种途径:网站操作 > 网站设置 > 修改所有网站设置 > 高级权限 > 设置 > 匿名访问):

clip_image040

设置匿名用户可访问整个网站.

现在从8002站点注销,测试匿名访问是否正常工作:

clip_image042

配置个别网站的权限

采用发布网站模板的网站集中默认包含一个新闻发布网站,新闻发布网站继承网站集的权限,也就是说启用匿名访问之后,匿名用户也可以访问这个新闻发布网站.

本节演示如何设置网站集下的个别网站的权限:

打开8001站点 > 网站操作 > 管理内容和结构:

clip_image044

新闻发布节的菜单中选择高级权限,在权限:新闻发布页面中选择操作 > 编辑权限:

clip_image046

在弹出来的对话框中点击确定:

clip_image048

打开权限:新闻发布页面中新出现的设置菜单 > 匿名访问,选择匿名用户可访问的内容为.

现在匿名访问8002站点,发现新闻发布网站已经从网站集的导航栏中隐藏了:

clip_image050

单独设置权限之前

clip_image052

原文地址:https://www.cnblogs.com/xwf2160/p/1660918.html