Login.OnLoggingIn メソッド
アセンブリ: System.Web (system.web.dll 内)

Dim e As LoginCancelEventArgs Me.OnLoggingIn(e)

OnLoggingIn メソッドは LoggingIn イベントを発生させます。LoggingIn イベントを使用して、ユーザーの認証前に必要な処理を実行したり、カスタム検証を実行したりします。
イベントが発生すると、デリゲートを使用してイベント ハンドラが呼び出されます。詳細については、「イベントの処理と発生」を参照してください。
OnLoggingIn メソッドを使用すると、デリゲートを結び付けずに、派生クラスでイベントを処理することもできます。派生クラスでイベントを処理する場合は、この手法をお勧めします。
継承時の注意 派生クラスで OnLoggingIn をオーバーライドする場合は、登録されているデリゲートがイベントを受け取ることができるように、基本クラスの OnLoggingIn メソッドを呼び出してください。
LoggingIn イベントを使用して、ユーザーが UserName プロパティに整形式の電子メール アドレスを入力するようにするコード例を次に示します。整形式のアドレスが入力されなかった場合、LoggingIn イベント ハンドラはログイン試行をキャンセルし、InstructionText プロパティに指定されたエラー メッセージを表示します。
<%@ page language="VB" %> <script runat="server"> ' This custom Login control checks the user name ' entered by the user is a valid e-mail address. Class CustomLogin Inherits Login Function IsValidEmail(ByVal strIn As String) As Boolean ' Return true if strIn is in valid e-mail format. Return Regex.IsMatch(strIn, ("^([\w-\.]+)@((\[[0-9]{1 ,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$")) End Function Overrides Protected Sub OnLoggingIn(ByVal e As System.Web.UI.WebControls.LoginCancelEventArgs) If Not IsValidEmail(UserName) Then InstructionText = "You must enter a valid e-mail address." e.Cancel = True Else InstructionText = String.Empty End If End Sub End Class ' Add the custom login control to the page. Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Dim loginControl As New CustomLogin loginControl.ID = "loginControl" PlaceHolder1.Controls.Add(loginControl) End Sub </script> <html> <body> <form id="Form1" runat="server"> <asp:placeholder id="Placeholder1" runat="Server"></asp:placeholder> </form> </body> </html>
<%@ page language="C#" %> <script runat="server"> // This custom Login control checks the user name // entered by the user is a valid e-mail address class CustomLogin : Login { bool IsValidEmail(string strIn) { // Return true if strIn is in valid e-mail format. return Regex.IsMatch(strIn, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"); } override protected void OnLoggingIn(System.Web.UI.WebControls.LoginCancelEventArgs e) { if (!IsValidEmail(UserName)) { InstructionText = "You must enter a valid e-mail address."; e.Cancel = true; } else { InstructionText = String.Empty; } } } // Add the custom login control to the page. void Page_Load(object sender, EventArgs e) { CustomLogin loginControl = new CustomLogin(); loginControl.ID = "loginControl"; Placeholder1.Controls.Add(loginControl); } </script> <html> <body> <form id="Form1" runat="server"> <asp:placeholder id="Placeholder1" runat="server"></asp:placeholder> </form> </body> </html>
Login コントロールを拡張する方法を次のコード例に示します。CustomLogin コントロールには、認証に使用するメンバシップ プロバイダをユーザーが選択できる DropDownList コントロールが含まれています(これらのプロバイダは、Web.config で設定されます)。OnLoggingIn メソッドで、MembershipProvider プロパティは DropDownList コントロールの選択された値に設定されます。
Imports System Imports System.Data Imports System.Configuration Imports System.Web Imports System.Web.Security Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.Web.UI.WebControls.WebParts Imports System.Web.UI.HtmlControls Namespace Samples.AspNet.Controls NotInheritable Public Class CustomLogin Inherits Login Public Sub New() End Sub 'New Protected Overrides Sub OnLoggingIn(ByVal e As LoginCancelEventArgs) ' Set the Membership provider for the Login control from a DropDownList. Dim list As DropDownList = CType(Me.FindControl("domain"), DropDownList) Me.MembershipProvider = list.SelectedValue MyBase.OnLoggingIn(e) End Sub 'OnLoggingIn Protected Overrides Sub CreateChildControls() LayoutTemplate = New MyTemplate() MyBase.CreateChildControls() End Sub 'CreateChildControls End Class 'CustomLogin ' A Template that contains the child controls. Public Class MyTemplate Implements ITemplate Sub InstantiateIn(ByVal container As Control) Implements ITemplate.InstantiateIn ' A TextBox for the user name. Dim username As New TextBox() username.ID = "username" ' A TextBox for the password. Dim password As New TextBox() password.ID = "password" ' A CheckBox to remember the user on subsequent visits. Dim remember As New CheckBox() remember.ID = "RememberMe" remember.Text = "Don't forget me!" ' Failure Text. Dim failure As New Literal() failure.ID = "FailureText" ' A DropDownList to choose the Membership provider. Dim domain As New DropDownList() domain.ID = "Domain" domain.Items.Add(New ListItem("SqlMembers")) domain.Items.Add(New ListItem("SqlMembers2")) ' A Button to log in. Dim submit As New Button() submit.CommandName = "login" submit.Text = "LOGIN" container.Controls.Add(New LiteralControl("UserName:")) container.Controls.Add(username) container.Controls.Add(New LiteralControl("<br>Password:")) container.Controls.Add(password) container.Controls.Add(New LiteralControl("<br>")) container.Controls.Add(remember) container.Controls.Add(New LiteralControl("<br>Domain:")) container.Controls.Add(domain) container.Controls.Add(New LiteralControl("<br>")) container.Controls.Add(failure) container.Controls.Add(New LiteralControl("<br>")) container.Controls.Add(submit) End Sub 'ITemplate.InstantiateIn End Class 'MyTemplate End Namespace
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; namespace Samples.AspNet.Controls { public sealed class CustomLogin : Login { public CustomLogin() { } protected override void OnLoggingIn(LoginCancelEventArgs e) { // Set the Membership provider for the Login control from a DropDownList. DropDownList list = (DropDownList)this.FindControl("domain"); this.MembershipProvider = list.SelectedValue; base.OnLoggingIn(e); } protected override void CreateChildControls() { LayoutTemplate = new MyTemplate(); base.CreateChildControls(); } } // A Template that contains the child controls. public class MyTemplate : ITemplate { void ITemplate.InstantiateIn(Control container) { // A TextBox for the user name. TextBox username = new TextBox(); username.ID = "username"; // A TextBox for the password. TextBox password = new TextBox(); password.ID = "password"; // A CheckBox to remember the user on subsequent visits. CheckBox remember = new CheckBox(); remember.ID = "RememberMe"; remember.Text = "Don't forget me!"; // Failure Text. Literal failure = new Literal(); failure.ID = "FailureText"; // A DropDownList to choose the Membership provider. DropDownList domain = new DropDownList(); domain.ID = "Domain"; domain.Items.Add(new ListItem("SqlMembers")); domain.Items.Add(new ListItem("SqlMembers2")); // A Button to log in. Button submit = new Button(); submit.CommandName = "login"; submit.Text = "LOGIN"; container.Controls.Add(new LiteralControl("UserName:")); container.Controls.Add(username); container.Controls.Add(new LiteralControl("<br>Password:")); container.Controls.Add(password); container.Controls.Add(new LiteralControl("<br>")); container.Controls.Add(remember); container.Controls.Add(new LiteralControl("<br>Domain:")); container.Controls.Add(domain); container.Controls.Add(new LiteralControl("<br>")); container.Controls.Add(failure); container.Controls.Add(new LiteralControl("<br>")); container.Controls.Add(submit); } } }

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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- Login.OnLoggingIn メソッドのページへのリンク