Membership クラス
アセンブリ: System.Web (system.web.dll 内)
構文
Public NotInheritable Class Membership
Membership クラスは、ASP.NET アプリケーションでユーザーの資格情報を検証し、パスワードや電子メール アドレスなどユーザー設定を管理する目的で使用されます。Membership クラスは、独自で使用することも、FormsAuthentication と連携して使用することにより、Web アプリケーションまたは Web サイトのユーザーを認証するための詳細なシステムを作成することもできます。Login コントロールには、ユーザーを検証するための便利なしくみを提供する Membership クラスがカプセル化されています。
-
メンバシップ情報 (ユーザー名、パスワード、電子メール アドレス、およびサポート データ) を Microsoft SQL Server またはその他のデータ ストアに格納します。
-
サイトを訪れるユーザーを認証します。プログラムでユーザーを認証することもできますし、Login コントロールを使用して、コーディングをほとんどすることなく詳細な認証システムを作成することもできます。
-
パスワードの作成、変更、取得、リセットなど、パスワードの管理を行います。パスワードを忘れたユーザーに対して、パスワードのリセットまたは取得を許可する際、ユーザーにパスワードの質問に対する解答を求めるように ASP.NET メンバシップを構成することもできます。
ASP.NET メンバシップは ASP.NET で認証を行うための独立した機能ですが、サイトの承認サービスを提供する ASP.NET のロール管理機能と統合させることもできます。また、ユーザー単位でカスタマイズできるアプリケーション固有のカスタマイズ機能を提供する ASP.NET ユーザー System.Web.Profile とメンバシップを統合させることもできます。詳細については、「ロール管理について」と「ASP.NET プロファイル プロパティの概要」を参照してください。
Membership クラスは、データ ソースとやり取りするためにメンバシップ プロバイダを使用します。.NET Framework には、Microsoft SQL Server データベースにユーザー情報を格納する SqlMembershipProvider、および Active Directory または Active Directory Application Mode (ADAM) サーバーにユーザー情報を格納できる ActiveDirectoryMembershipProvider が付属します。また、Membership クラスで使用できる代替データ ソースとやり取りするカスタム メンバシップ プロバイダを実装することもできます。カスタム メンバシップ プロバイダは、MembershipProvider 抽象クラスを継承します。詳細については、「メンバシップ プロバイダの実装」を参照してください。
既定では、すべての ASP.NET アプリケーションで ASP.NET メンバシップは有効になっています。既定のメンバシップ プロバイダは SqlMembershipProvider で、コンピュータ構成内で AspNetSqlProvider と指定されます。 SqlMembershipProvider の既定のインスタンスは、Microsoft SQL Server のローカル インスタンスに接続するように構成されます。
既定の設定を変更して、AspNetSqlProvider インスタンス以外の SqlMembershipProvider を既定のプロバイダとして指定したり、Web.config ファイルを使用してカスタム プロバイダのインスタンスを ASP.NET アプリケーションの既定のプロバイダとして指定したりできます。Web.config ファイルの membership 構成セクションを使用して、Web アプリケーションの ASP.NET メンバシップ構成を指定できます。membership セクションの providers サブセクションを使用して、既定のプロバイダ以外のメンバシップ プロバイダを指定できます。たとえば、次の membership セクションでは、現在のアプリケーション構成から既定のメンバシップ プロバイダを削除し、MySqlServer という名前の SQL Server インスタンスに接続する新しいプロバイダを SqlProvider の名前で追加しています。
<configuration> <connectionStrings> <add name="SqlServices" connectionString="Data Source=MySqlServer;Integrated Security=SSPI;Initial Catalog=aspnetdb;" /> </connectionStrings> <system.web> <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20"> <providers> <remove name="AspNetSqlProvider" /> <add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="SqlServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" passwordFormat="Hashed" applicationName="/" /> </providers> </membership> </system.web> </configuration>
次のコード例に、フォーム認証と ASP.NET メンバシップを使用するように構成されている ASP.NET アプリケーションのログイン ページを示します。指定されたユーザーの資格情報が無効な場合、ユーザーにメッセージが表示されます。それ以外の場合、RedirectFromLoginPage メソッドを使用して、ユーザーは最初に要求した URL にリダイレクトされます。
メモ |
---|
ユーザーに資格情報の入力を求めて、メンバシップ システム内で資格情報を検証するために必要なほぼすべてのロジックが ASP.NET ログイン コントロール (Login、LoginView、LoginStatus、LoginName、および PasswordRecovery) にカプセル化されています。Membership クラスを使用してプログラムで認証作業を行う代わりにこれらのコントロールを使用できます。 |
<%@ Page Language="VB" %> <%@ Import Namespace="System.Web.Security" %> <script runat="server"> Public Sub Login_OnClick(sender As Object, args As EventArgs) If (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text)) Then FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked) Else Msg.Text = "Login failed. Please check your user name and password and try again." End If End Sub </script> <html> <head> <title>Login</title> </head> <body> <form runat="server"> <h3>Login</h3> <asp:Label id="Msg" ForeColor="maroon" runat="server" /><P> Username: <asp:Textbox id="UsernameTextbox" runat="server" /><BR> Password: <asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /><BR> <asp:Button id="LoginButton" Text="Login" OnClick="Login_OnClick" runat="server" /> <asp:CheckBox id="NotPublicCheckBox" runat="server" /> Check here if this is <u>not</u> a public computer. </form> </body> </html>
<%@ Page Language="C#" %> <%@ Import Namespace="System.Web.Security" %> <script runat="server"> public void Login_OnClick(object sender, EventArgs args) { if (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text)) FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked); else Msg.Text = "Login failed. Please check your user name and password and try again."; } </script> <html> <head> <title>Login</title> </head> <body> <form runat="server"> <h3>Login</h3> <asp:Label id="Msg" ForeColor="maroon" runat="server" /><P> Username: <asp:Textbox id="UsernameTextbox" runat="server" /><BR> Password: <asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /><BR> <asp:Button id="LoginButton" Text="Login" OnClick="Login_OnClick" runat="server" /> <asp:CheckBox id="NotPublicCheckBox" runat="server" /> Check here if this is <u>not</u> a public computer. </form> </body> </html>
継承階層
System.Web.Security.Membership
プラットフォーム
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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
- Membership クラスのページへのリンク