65.9K
CodeProject 正在变化。 阅读更多。
Home

MOSS 针对 FBA 的更改密码功能

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.94/5 (10投票s)

2008年12月28日

CPOL

3分钟阅读

viewsIcon

103434

downloadIcon

614

此功能使 MOSS 用户在启用基于表单的身份验证时能够更改其密码

引言

本文介绍如何在 MOSS 2007 中制作更改密码功能,以便用户可以更改其密码。本文不介绍如何在 MOSS 中启用 FBA(基于表单的身份验证),您可以在互联网上的不同博客和文章中轻松找到相关信息。我建议阅读 Code Project 上的这篇文章:MOSS 2007 – 启用表单身份验证 [^]。

问题

在 MOSS 上启用表单身份验证意味着用户凭据存储在成员资格数据库(如 ASP.NET 数据库)中。 MOSS 不方便用户在此数据库中更改其密码。

解决方案

我们建议的解决方案是在标准用户菜单中添加一个新功能(更改密码功能)

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

解决方案详情

如果您不想逐步完成解决方案,可以使用附件中的文件并直接转到第三部分:部署。实际上,我从 Sheetal Jain 的博客 [^] 中获得了解决方案,但我添加了详细信息和说明。

以下步骤详细说明了解决方案

  1. 创建 ChangePassword.aspx 
  2. 创建 ChangePassword 功能 
  3. 部署

1. 创建 ChangePassword.aspx

您可以使用 Visual Studio 创建一个新的网站“TempSite”,然后

  1. 添加一个新的 Web 窗体“ChangePassword.aspx

  2. ChangePassword 控件从工具箱拖到窗体

  3. 设置控件的有效属性,例如 (NewPasswordRegularExpressionErrorMessage, CancelDestinationPageUrl, ContinueDestinationPageUrl)

  4. 应用 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 中创建自定义功能的优秀教程 [^]

  1. 创建一个新文件夹“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>
  2. 将 feature Id 编辑为一个唯一的 GUID,您可以从 C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\guidgen.exe 路径下的 guidgen 中获取它

  3. 根据需要编辑 feature Title、Description 和 Version

  4. 编辑 Scope 属性为“Site”或“Web”,以表明该功能是用于每个站点还是整个 Web

  5. ElementManifest 元素中,将 Location 属性设置为一个包含更多功能属性的 XML 文件位置“elements.xml

  6. 在与“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>
  7. 按所示设置 CustomAction 属性,将 Location 设置为“StandardMenu”,将 UrlAction URL 属性设置为“~site/_layouts/changepassword.aspx”,因为我们将把我们的 ChangePassword.aspx 添加到此路径。

3. 部署

  1. 将“ChangePassword.aspx”文件复制到以下路径
    C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\

  2. 将包含 elements.xmlfeature.xml 的“ChangePassword”文件夹复制到以下路径:C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\

  3. 打开 stsadm 工具并运行以下命令

    stsadm -o installfeature -name ChangePassword 

现在该功能已成功安装,但需要激活。

  1. 打开您的站点,然后选择“站点操作” - “站点设置” - “修改所有站点设置”。
    从出现的页面中,选择“站点集功能”(在“站点集管理”子菜单下)

  2. 将列出新功能,选择“激活”。

  1. 现在您可以在标准用户菜单中找到“更改密码”操作

    此操作会将您重定向到 changepassword.aspx 页面

这就是全部。非常感谢!

谢谢

非常感谢 Ahmad Marwan Madkhana 的支持。

历史

  • 2008 年 12 月 28 日:首次发布
© . All rights reserved.