Sharepoint 的使用者資訊設定裡, 並沒有提供讓使用者自行修改密碼的功能。還好 WSSv3 (MOSS 2007) 使用的是 ASP.NET 2.0 Membership Provider, 修改密碼的工作可以交給 Membership Provider 來處理, 我們只要使用 <asp:ChangePassword /> 這個控制項, 就可以提供變更密碼的功能。
一種方法是把 <asp:ChangePassword /> 做成 WebPart (或者是加到 SmartPart 之中), 然後建立一個網頁組件頁面, 再把 WebPart 放進頁面中。
另一種作法, 是建立一個專屬的 .aspx 頁面到 layouts 目錄, 因為變更使用者個人資訊的頁面也是這樣。將下面的檔案存到 C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\userchgpwd.aspx, (如果你的 layouts 位置不同請找一下正確的路徑)
<%@ Page Language="C#" MasterPageFile="~/_layouts/application.master" %><script runat="server">protected void cp1_ContinueButtonClick(object sender, EventArgs e){ Response.Redirect(Request.ApplicationPath);}</script><asp:Content ContentPlaceHolderId="PlaceHolderPageTitle" runat="server"> 變更密碼</asp:Content><asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server" OnContinueButtonClick="cp1_ContinueButtonClick"> <table cellspacing="0" cellpadding="0"> <tr> <td> <asp:ChangePassword id="cp1" runat="server"> </asp:ChangePassword> </td> </tr> </table></asp:Content>
第二步則是在使用者選單裡加入變更密碼的連結, 要修改 C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\CONTROLTEMPLATES\Welcome.ascx 這個檔案, 在 ID_PersonalInformation 與 ID_LoginAsDifferentUser 之間加入一個新的 <SharePoint:MenuItemTemplate />, 並把點選路徑指向 /_layouts/userchgpwd.aspx (如果你的密碼變更路徑不一樣, 要改成正確的路徑), 就會在使用者選單裡多一個變更密碼的選項。
<SharePoint:MenuItemTemplate runat="server" id="ID_PersonalInformation" ... />
<SharePoint:MenuItemTemplate runat="server" id="ID_ChangePassword" Text="變更密碼" Description="修改個人登入密碼" MenuGroupId="100" Sequence="100" UseShortId="true" ClientOnClickNavigateUrl="/_layouts/userchgpwd.aspx" />
<SharePoint:MenuItemTemplate runat="server" id="ID_LoginAsDifferentUser" ... />