ChangePassword.ChangingPassword イベント
アセンブリ: System.Web (system.web.dll 内)
構文
Dim instance As ChangePassword Dim handler As LoginCancelEventHandler AddHandler instance.ChangingPassword, handler
public: event LoginCancelEventHandler^ ChangingPassword { void add (LoginCancelEventHandler^ value); void remove (LoginCancelEventHandler^ value); }
ChangingPassword イベントは、ユーザー アカウントのパスワードを変更するために、MembershipProvider プロパティで指定したメンバシップ プロバイダが呼び出される前に発生します。
ChangingPassword イベントを使用して、新しいパスワードをチェックして一般的なパスワードのリストに含まれないことを確認するなど、パスワードを変更する前に必要な処理を実行します。ChangingPassword イベントの後、ChangedPassword イベントの前に、ユーザーの新しい承認トークンが設定されます。
ChangingPassword イベントは、イベント ハンドラがメンバシップ プロバイダを呼び出すべきではないと判断した場合、LoginCancelEventArgs オブジェクトの Cancel プロパティを true に設定することでキャンセルできます。
ChangePassword コントロールを使用し、ChangingPassword という名前の ChangingPassword イベントの ハンドラを含む ASP.NET ページを使用する方法を次のコード例に示します。このイベント ハンドラのコードは、CurrentPassword プロパティに格納されている古いパスワードと NewPassword に格納されている新しいパスワードとを比較します。2 つのパスワードが同じ場合、パスワードの変更は失敗します。
ChangePassword コントロールでは、ユーザーが自分のユーザー名を入力できるように、DisplayUserName プロパティが true に設定されます。つまり、ユーザーはログオンしてページを表示する必要がありません。
このコード例では、ASP.NET メンバシップとフォーム認証を使用するように構成された ASP.NET Web サイトと、名前とパスワードがわかっているユーザーが作成されていることを前提にしています。詳細については、「方法 : 簡単なフォーム認証を実装する」を参照してください。
<%@ Page Language="VB" AutoEventWireup="True" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> Public Sub PageLoad(ByVal Sender As Object, ByVal e As EventArgs) 'Manually register the event-handling methods. AddHandler ChangePassword1.ChangingPassword, AddressOf Me._ChangingPassword End Sub Public Sub _ChangingPassword(ByVal Sender As Object, ByVal e As LoginCancelEventArgs) If (ChangePassword1.CurrentPassword.ToString() = ChangePassword1.NewPassword.ToString) Then Message1.Visible = True Message1.Text = "Old password and new password must be different. Please try again." e.Cancel = True Else 'This line prevents the error showing up after a first failed attempt. Message1.Visible = False End If End Sub </script> <html > <head runat="server"> <title>ChangePassword including a ChangingPassword event handler</title> </head> <body> <form id="form1" runat="server"> <div align="center"> <h1>ChangePassword</h1> <asp:LoginView ID="LoginView1" Runat="server" Visible="true"> <LoggedInTemplate> <asp:LoginName ID="LoginName1" Runat="server" FormatString="You are logged in as {0}." /> <BR /> </LoggedInTemplate> <AnonymousTemplate> You are not logged in </AnonymousTemplate> </asp:LoginView><br /> <asp:ChangePassword ID="ChangePassword1" Runat="server" BorderStyle="Solid" BorderWidth="1" CancelDestinationPageUrl="~/Default.aspx" DisplayUserName="true" OnChangingPassword="_ChangingPassword" ContinueDestinationPageUrl="~/Default.aspx" > </asp:ChangePassword><br /> <asp:Label ID="Message1" Runat="server" ForeColor="Red" /><br /> <asp:HyperLink ID="HyperLink1" Runat="server" NavigateUrl="~/Default.aspx"> Home </asp:HyperLink> </div> </form> </body> </html>
<%@ Page Language="C#" AutoEventWireup="True" %> <script runat="server"> void Page_Load(Object sender, EventArgs e) { //Manually register the event-handling methods. ChangePassword1.ChangingPassword += new LoginCancelEventHandler(this._ChangingPassword); } void _ChangingPassword(Object sender, LoginCancelEventArgs e) { if (ChangePassword1.CurrentPassword.ToString() == ChangePassword1.NewPassword.ToString()) { Message1.Visible = true; Message1.Text = "Old password and new password must be different. Please try again."; e.Cancel = true; } else { //This line prevents the error showing up after a first failed attempt. Message1.Visible = false; } } </script> <html > <head runat="server"> <title>ChangePassword including a ChangingPassword event handler</title> </head> <body> <form id="form1" runat="server"> <div align="center"> <h1>ChangePassword</h1> <asp:LoginView ID="LoginView1" Runat="server" Visible="true"> <LoggedInTemplate> <asp:LoginName ID="LoginName1" Runat="server" FormatString="You are logged in as {0}." /> <BR /> </LoggedInTemplate> <AnonymousTemplate> You are not logged in </AnonymousTemplate> </asp:LoginView><br /> <asp:ChangePassword ID="ChangePassword1" Runat="server" BorderStyle="Solid" BorderWidth="1" CancelDestinationPageUrl="~/Default.aspx" DisplayUserName="true" OnChangingPassword="_ChangingPassword" ContinueDestinationPageUrl="~/Default.aspx" > </asp:ChangePassword><br /> <asp:Label ID="Message1" Runat="server" ForeColor="Red" /><br /> <asp:HyperLink ID="HyperLink1" Runat="server" NavigateUrl="~/Default.aspx"> Home </asp:HyperLink> </div> </form> </body> </html>
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
ChangePassword クラス
ChangePassword メンバ
System.Web.UI.WebControls 名前空間
OnChangingPassword
その他の技術情報
ASP.NET Web ページのサーバー イベント処理
ASP.NET ログイン コントロールの概要
ASP.NET ログイン コントロールの外観のカスタマイズ
ASP.NET Web サーバー コントロール テンプレート
方法 : 匿名ユーザーおよびログイン ユーザーに異なる情報を表示する
Web サイト管理ツールの [セキュリティ] タブ
ログイン コントロールのセキュリティ保護
Web アプリケーションのセキュリティに関する基本的な対策
メンバシップのセキュリティ保護
- ChangePassword.ChangingPassword イベントのページへのリンク