MOSS 针对 FBA 的更改密码功能
此功能使 MOSS 用户在启用基于表单的身份验证时能够更改其密码
引言
本文介绍如何在 MOSS 2007 中制作更改密码功能,以便用户可以更改其密码。本文不介绍如何在 MOSS 中启用 FBA(基于表单的身份验证),您可以在互联网上的不同博客和文章中轻松找到相关信息。我建议阅读 Code Project 上的这篇文章:MOSS 2007 – 启用表单身份验证 [^]。
问题
在 MOSS 上启用表单身份验证意味着用户凭据存储在成员资格数据库(如 ASP.NET 数据库)中。 MOSS 不方便用户在此数据库中更改其密码。
解决方案
我们建议的解决方案是在标准用户菜单中添加一个新功能(更改密码功能)

该功能将用户重定向到一个自定义页面 (ChangePassword.aspx),该页面提示他输入当前密码和新密码。

解决方案详情
如果您不想逐步完成解决方案,可以使用附件中的文件并直接转到第三部分:部署。实际上,我从 Sheetal Jain 的博客 [^] 中获得了解决方案,但我添加了详细信息和说明。
以下步骤详细说明了解决方案
- 创建 ChangePassword.aspx
- 创建
ChangePassword
功能 - 部署
1. 创建 ChangePassword.aspx
您可以使用 Visual Studio 创建一个新的网站“TempSite”,然后
-
添加一个新的 Web 窗体“ChangePassword.aspx”
-
将
ChangePassword
控件从工具箱拖到窗体 -
设置控件的有效属性,例如 (
NewPasswordRegularExpressionErrorMessage
,CancelDestinationPageUrl
,ContinueDestinationPageUrl
) -
应用 MOSS 母版页,方法是将“
MasterPageFile
”页面属性设置为您在 MOSS 中选择的母版页,例如“~/_layouts/simple.master”,然后删除所有 HTML 标签并为母版页内容占位符 (PlaceHolderMain
,即页面中间的主要内容) 添加内容标签。最终页面应如下所示<%@ Page Language="C#" MasterPageFile="~/_layouts/simple.master" %> <asp:Content ID="Content1" ContentPlaceHolderId="PlaceHolderMain" runat="server"> <asp:ChangePassword id="myChangePassword" newpasswordregularexpressionerrormessage="Error: Your password must be at least 7 characters long, and contain at least one number and one special character." runat ="server" CancelDestinationPageUrl="~/pages/default.aspx" ContinueDestinationPageUrl="~/pages/default.aspx" > </asp:ChangePassword> </asp:Content>
2. 创建 ChangePassword 功能
在开始之前,这里有一个关于在 MOSS 中创建自定义功能的优秀教程 [^]
-
创建一个新文件夹“ChangePassword”,并在其中创建一个新的 XML 文件“feature.xml”
<?xml version="1.0" encoding="utf-8"?> <Feature Id="FEAD7555-AE6D-45DD-8260-13B563CB4C71" Title="Change Password" Description="Change Password" Version="1.0.0.0" Scope="Site" xmlns="http://schemas.microsoft.com/sharepoint/"> <ElementManifests> <ElementManifest Location="elements.xml" /> </ElementManifests> </Feature>
-
将 feature Id 编辑为一个唯一的 GUID,您可以从 C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\guidgen.exe 路径下的 guidgen 中获取它
-
根据需要编辑 feature Title、Description 和 Version
-
编辑 Scope 属性为“Site”或“Web”,以表明该功能是用于每个站点还是整个 Web
-
在
ElementManifest
元素中,将Location
属性设置为一个包含更多功能属性的 XML 文件位置“elements.xml” -
在与“feature.xml”相同的文件夹中创建“elements.xml”,如下所示
<?xml version="1.0" encoding="utf-8"?> <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <CustomAction Id="ChangePasswordMenuId" Title="Change Password" Description="Change your password" Sequence="2000" Location="Microsoft.SharePoint.StandardMenu" GroupId="PersonalActions" > <UrlAction Url="~site/_layouts/changepassword.aspx"/> </CustomAction> </Elements>
-
按所示设置
CustomAction
属性,将 Location 设置为“StandardMenu
”,将UrlAction
URL 属性设置为“~site/_layouts/changepassword.aspx”,因为我们将把我们的 ChangePassword.aspx 添加到此路径。
3. 部署
-
将“ChangePassword.aspx”文件复制到以下路径
C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\ -
将包含 elements.xml 和 feature.xml 的“ChangePassword”文件夹复制到以下路径:C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\
-
打开 stsadm 工具并运行以下命令
stsadm -o installfeature -name ChangePassword
现在该功能已成功安装,但需要激活。
-
打开您的站点,然后选择“站点操作” - “站点设置” - “修改所有站点设置”。
从出现的页面中,选择“站点集功能”(在“站点集管理”子菜单下) -
将列出新功能,选择“激活”。

-
现在您可以在标准用户菜单中找到“更改密码”操作
此操作会将您重定向到 changepassword.aspx 页面
这就是全部。非常感谢!
谢谢
非常感谢 Ahmad Marwan Madkhana 的支持。
历史
- 2008 年 12 月 28 日:首次发布