次の方法で共有


ユーザー アカウントをロック解除し、承認する (C#)

作成者: Scott Mitchell

注意

この記事が作成されて以来、ASP.NET メンバーシップ プロバイダーは ASP.NET Identity に置き換えられました。 この記事の執筆時点で取り上げられたメンバーシップ プロバイダーではなく 、ASP.NET ID プラットフォームを使用するようにアプリを更新することを強くお勧めします。 ASP.NET ID には、ASP.NET メンバーシップ システムに比して、次のような多くの利点があります。

  • パフォーマンスの向上
  • 拡張性とテスト性の向上
  • OAuth、OpenID Connect、および 2 要素認証のサポート
  • クレームベースの ID のサポート
  • ASP.Net Core との相互運用性の向上

このチュートリアルでは、管理者がユーザーのロックアウトおよび承認された状態を管理するための Web ページを作成する方法について説明します。 また、メール アドレスを確認した後にのみ、新しいユーザーを承認する方法も確認します。

はじめに

ユーザー名、パスワード、電子メールと共に、各ユーザー アカウントには、ユーザーがサイトにログインできるかどうかを示す 2 つの状態フィールドがあります(ロックアウトと承認)。 指定した数分以内に無効な資格情報を指定した回数だけ指定すると、ユーザーは自動的にロックアウトされます (既定の設定では、10 分以内に無効なログイン試行が 5 回行われるとユーザーがロックされます)。 承認された状態は、新しいユーザーがサイトにログオンする前に何らかのアクションをトランスパイルする必要があるシナリオで役立ちます。 たとえば、ユーザーがログインする前に、まず自分のメール アドレスを確認するか、管理者によって承認される必要がある場合があります。

ロックアウトされたユーザーまたは未承認のユーザーはログインできないため、これらの状態をリセットする方法を考えるのは当然です。 ASP.NET には、ユーザーのロックアウトおよび承認された状態を管理するための組み込みの機能や Web コントロールは含まれていません。これらの決定はサイトごとに処理する必要があるためです。 一部のサイトでは、すべての新しいユーザー アカウント (既定の動作) が自動的に承認される場合があります。 他のユーザーは、管理者が新しいアカウントを承認するか、サインアップ時に指定されたメール アドレスに送信されたリンクにアクセスするまでユーザーを承認しません。 同様に、管理者が状態をリセットするまでユーザーをロックアウトするサイトもあれば、アカウントのロック解除にアクセスできる URL を含むメールをロックアウトされたユーザーに送信するサイトもあります。

このチュートリアルでは、管理者がユーザーのロックアウトおよび承認された状態を管理するための Web ページを作成する方法について説明します。 また、メール アドレスを確認した後にのみ、新しいユーザーを承認する方法も確認します。

手順 1: ユーザーのロックアウト状態と承認済み状態の管理

多くのチュートリアルから 1 つのユーザー アカウントを選択するためのインターフェイスの構築」チュートリアルでは、ページでフィルター処理された GridView に各ユーザー アカウントを一覧表示するページを作成しました。 グリッドには、各ユーザーの名前と電子メール、承認された状態とロックアウトされた状態、現在オンラインかどうか、およびユーザーに関するコメントが一覧表示されます。 ユーザーの承認された状態とロックアウトされた状態を管理するために、このグリッドを編集可能にすることができます。 ユーザーの承認済みの状態を変更するには、管理者は最初にユーザー アカウントを見つけて、対応する GridView 行を編集し、承認済みのチェック ボックスをオンまたはオフにします。 または、別の ASP.NET ページを使用して、承認された状態とロックアウトされた状態を管理することもできます。

このチュートリアルでは、 と の 2 つの ASP.NET ページ ManageUsers.aspxUserInformation.aspx使用しましょう。 ここでの考え方は、 ManageUsers.aspx システム内のユーザー アカウントを一覧表示し UserInformation.aspx 、管理者は特定のユーザーの承認済みおよびロックアウトされた状態を管理できるようにします。 最初のビジネスの順序は、リンクの列としてレンダリングされる HyperLinkField を含むように GridView ManageUsers.aspx を 拡張することです。 各リンクが を UserInformation.aspx?user=UserName指す必要があります。 ここで、UserName は編集するユーザーの名前です。

注意

パスワードの回復と変更に関するチュートリアルのコードをダウンロードした場合、ページには既に一連の "管理" リンクがManageUsers.aspx含まれており、UserInformation.aspxページには選択したユーザーのパスワードを変更するためのインターフェイスが用意されています。 このチュートリアルに関連付けられているコードでその機能をレプリケートしないことにしました。これは、Membership API を回避し、SQL Server データベースで直接操作してユーザーのパスワードを変更することで機能するためです。 このチュートリアルは、ページから最初 UserInformation.aspx から始まります。

ページを ManageUsers.aspx 開き、GridView に HyperLinkField を UserAccounts 追加します。 HyperLinkField の Text プロパティを "Manage" に設定し、その DataNavigateUrlFields プロパティと DataNavigateUrlFormatString プロパティをそれぞれ UserName "UserInformation.aspx?user={0}" に設定します。 これらの設定は、すべてのハイパーリンクに "管理" というテキストが表示されるように HyperLinkField を構成しますが、各リンクは適切な UserName 値をクエリ文字列に渡します。

HyperLinkField を GridView に追加した後、ブラウザーを使用してページを ManageUsers.aspx 表示します。 図 1 に示すように、各 GridView 行に "管理" リンクが含まれるようになりました。 Bruce の "管理" リンクは を UserInformation.aspx?user=Bruce指し、Dave の "管理" リンクは を指しています UserInformation.aspx?user=Dave

HyperLinkField は、

図 1: HyperLinkField は、各ユーザー アカウントの "管理" リンクを追加します (フルサイズの画像を表示するには、ここをクリックします)

ページのユーザー インターフェイスとコード UserInformation.aspx をすぐに作成しますが、まず、ユーザーのロックアウトおよび承認された状態をプログラムで変更する方法について説明します。 クラスには MembershipUserIsApproved プロパティがありますIsLockedOutIsLockedOut プロパティは読み取り専用です。 プログラムによってユーザーをロックアウトするメカニズムはありません。ユーザーのロックを解除するには、 クラスの UnlockUser メソッドMembershipUser使用します。 プロパティは IsApproved 読み取り可能で書き込み可能です。 このプロパティに対する変更を保存するには、 クラスの UpdateUser メソッドMembership呼び出し、変更された MembershipUser オブジェクトを渡す必要があります。

IsApprovedプロパティは読み取り可能で書き込み可能であるため、CheckBox コントロールは、おそらくこのプロパティを構成するための最適なユーザー インターフェイス要素です。 ただし、管理者はユーザーをロックアウトできず、ユーザーのロックを解除することしかできないため、プロパティに対 IsLockedOut して CheckBox は機能しません。 プロパティに IsLockedOut 適したユーザー インターフェイスは、クリックするとユーザー アカウントのロックを解除する Button です。 このボタンは、ユーザーがロックアウトされている場合にのみ有効にする必要があります。

ページのUserInformation.aspx作成

これで、 でユーザー インターフェイス UserInformation.aspxを実装する準備ができました。 このページを開き、次の Web コントロールを追加します。

  • HyperLink コントロールをクリックすると、管理者がページに ManageUsers.aspx 戻ります。
  • 選択したユーザーの名前を表示するための Label Web コントロール。 この Label の ID を に UserNameLabel 設定し、そのプロパティを Text クリアします。
  • という名前 IsApprovedの CheckBox コントロール。 AutoPostBack プロパティを true に設定します。
  • ユーザーの最後のロックアウト日を表示するための Label コントロール。 このラベル LastLockedOutDateLabel に名前を付け、そのプロパティを Text クリアします。
  • ユーザーのロックを解除するためのボタン。 このボタン UnlockUserButton に名前を付け、そのプロパティを Text "Unlock User" に設定します。
  • "ユーザーの承認済み状態が更新されました" などのステータス メッセージを表示するためのラベル コントロール。このコントロール StatusMessageに名前を付け、そのプロパティを Text クリアし、そのプロパティを CssClassImportant設定します。 (次の場合) Important CSS クラスはスタイルシート ファイルで Styles.css 定義され、対応するテキストが大きな赤いフォントで表示されます)。

これらのコントロールを追加すると、Visual Studio のデザイン ビューは図 2 のスクリーン ショットのようになります。

UserInformation.aspx のユーザー インターフェイスを作成する

図 2: のユーザー インターフェイス UserInformation.aspx を作成する (クリックするとフルサイズの画像が表示されます)

ユーザー インターフェイスが完了したら、次のタスクは、選択したユーザーの IsApproved 情報に基づいて CheckBox やその他のコントロールを設定することです。 ページのイベントのイベント ハンドラーを作成し、次の Load コードを追加します。

protected void Page_Load(object sender, EventArgs e)
{
     if (!Page.IsPostBack)
     {

          // If querystring value is missing, send the user to ManageUsers.aspx
          string userName = Request.QueryString["user"];
          if (string.IsNullOrEmpty(userName))
               Response.Redirect("ManageUsers.aspx");

          // Get information about this user
          MembershipUser usr = Membership.GetUser(userName);
          if (usr == null)
               Response.Redirect("ManageUsers.aspx");

          UserNameLabel.Text = usr.UserName;
          IsApproved.Checked = usr.IsApproved;
          if (usr.LastLockoutDate.Year < 2000)

               LastLockoutDateLabel.Text = string.Empty;
          else
               LastLockoutDateLabel.Text = usr.LastLockoutDate.ToShortDateString();

          UnlockUserButton.Enabled = usr.IsLockedOut;
     }
}

上記のコードは、これがページへの最初のアクセスであり、後続のポストバックではないことを確認することから始まります。 次に、querystring フィールドを介して渡されたユーザー名を user 読み取り、 メソッドを使用してそのユーザー アカウントに関する情報を Membership.GetUser(username) 取得します。 クエリ文字列を使用してユーザー名が指定されなかった場合、または指定したユーザーが見つからなかった場合は、管理者がページに ManageUsers.aspx 送り返されます。

MembershipUserオブジェクトのUserName値が にUserNameLabel表示され、IsApprovedCheckBox がプロパティ値に基づいてIsApprovedチェックされます。

オブジェクトの LastLockoutDate プロパティMembershipUserDateTimeユーザーが最後にロックアウトされた日時を示す値を返します。ユーザーがロックアウトされていない場合、返される値はメンバーシップ プロバイダーによって異なります。 新しいアカウントが作成されると、 によってSqlMembershipProviderテーブルのLastLockoutDateフィールドが aspnet_Membership1754-01-01 12:00:00 AM設定されます。 上記のコードでは、 プロパティが 2000 年より前に発生したLastLockoutDate場合は、 にLastLockoutDateLabel空の文字列が表示されます。それ以外の場合は、プロパティのLastLockoutDate日付部分が Label に表示されます。 の Enabled プロパティはUnlockUserButton'、ユーザーのロックアウト状態に設定されます。つまり、このボタンは、ユーザーがロックアウトされている場合にのみ有効になります。

少し時間を取って、ブラウザーを UserInformation.aspx 使用してページをテストします。 もちろん、管理するユーザー アカウントを開始 ManageUsers.aspx して選択する必要があります。 に UserInformation.aspx到着すると、CheckBox はユーザーが承認された場合にのみチェックされることに注意してください IsApproved 。 ユーザーがロックアウトされたことがある場合は、最後にロックアウトされた日付が表示されます。 [ユーザーのロック解除] ボタンは、ユーザーが現在ロックアウトされている場合にのみ有効になります。CheckBox をオンまたはオフ IsApproved にするか、[ユーザーのロック解除] ボタンをクリックするとポストバックが発生しますが、これらのイベントのイベント ハンドラーをまだ作成していないため、ユーザー アカウントに変更は加えられません。

Visual Studio に戻り、CheckBox のイベントと Button Click のイベントのCheckedChangedイベント ハンドラーIsApprovedUnlockUser作成します。 イベント ハンドラーで CheckedChanged 、ユーザーの IsApproved プロパティを CheckBox の プロパティに Checked 設定し、 の Membership.UpdateUser呼び出しを使用して変更を保存します。 イベント ハンドラーでClick、 オブジェクトの UnlockUser メソッドをMembershipUser呼び出すだけです。 両方のイベント ハンドラーで、適切なメッセージを Label に StatusMessage 表示します。

protected void IsApproved_CheckedChanged(object sender, EventArgs e)
{
     // Toggle the user's approved status
     string userName = Request.QueryString["user"];
     MembershipUser usr = Membership.GetUser(userName);
     usr.IsApproved = IsApproved.Checked;
     Membership.UpdateUser(usr);
     StatusMessage.Text = "The user's approved status has been updated.";
}

protected void UnlockUserButton_Click(object sender, EventArgs e)
{
     // Unlock the user account
     string userName = Request.QueryString["user"];
     MembershipUser usr = Membership.GetUser(userName);

     usr.UnlockUser();
     UnlockUserButton.Enabled = false;
     StatusMessage.Text = "The user account has been unlocked.";
}

ページのUserInformation.aspxテスト

これらのイベント ハンドラーを配置した状態で、ページを見直し、承認されていないユーザーを確認します。 図 3 に示すように、ページに、ユーザーの IsApproved プロパティが正常に変更されたことを示す簡単なメッセージが表示されます。

Chris は未承認です

図 3: Chris は承認されていません (フルサイズの画像を表示する をクリックします)

次に、ログアウトし、アカウントが承認されていないユーザーとしてログインを試みます。 ユーザーは承認されていないため、ログインできません。 既定では、理由に関係なく、ユーザーがログインできない場合は、Login コントロールに同じメッセージが表示されます。 ただし、メンバーシップ ユーザー ストアに対するユーザー資格情報の検証に関するチュートリアルでは、より適切なメッセージを表示するための Login コントロールの強化について説明しました。 図 4 に示すように、Chris には、アカウントがまだ承認されていないため、ログインできないことを説明するメッセージが表示されます。

アカウントが承認されていないため、Chris はログインできません

図 4: Chris はアカウントが承認されていないためログインできません (クリックするとフルサイズの画像が表示されます)

ロックアウト機能をテストするには、承認されたユーザーとしてログインを試みますが、正しくないパスワードを使用してください。 ユーザーのアカウントがロックアウトされるまで、必要な回数だけこのプロセスを繰り返します。Login コントロールも更新され、ロックアウトされたアカウントからログインしようとした場合にカスタム メッセージが表示されるようになりました。 ログイン ページに次のメッセージが表示され始めると、アカウントがロックアウトされていることがわかります。"無効なログイン試行が多すぎるため、アカウントがロックアウトされました。 アカウントのロックを解除するには、管理者に問い合わせてください。

ページに ManageUsers.aspx 戻り、ロックアウトされたユーザーの [管理] リンクをクリックします。 図 5 に示すように、[ユーザーのロック解除] LastLockedOutDateLabel ボタンが有効になっている必要がある値が表示されます。 [ユーザーのロック解除] ボタンをクリックして、ユーザー アカウントのロックを解除します。 ユーザーのロックを解除すると、ユーザーは再度ログインできるようになります。

Dave がシステムからロックアウトされました

図 5: Dave がシステムからロックアウトされました (フルサイズの画像を表示する をクリックします)

手順 2: 新しいユーザーの承認済み状態を指定する

承認された状態は、新しいユーザーがサイトのユーザー固有の機能にログインしてアクセスする前に何らかのアクションを実行するシナリオで役立ちます。 たとえば、ログイン ページとサインアップ ページを除くすべてのページに、認証されたユーザーのみがアクセスできるプライベート Web サイトを実行している場合があります。 しかし、見知らぬ人があなたのウェブサイトに到達し、サインアップページを見つけて、アカウントを作成した場合はどうなりますか? この問題を回避するには、サインアップ ページをフォルダーに Administration 移動し、管理者が各アカウントを手動で作成する必要があります。 または、管理者がユーザー アカウントを承認するまで、すべてのユーザーにサインアップを許可し、サイトへのアクセスを禁止することもできます。

既定では、CreateUserWizard コントロールは新しいアカウントを承認します。 この動作は、コントロールの DisableCreatedUser プロパティを使用して構成できます。 新しいユーザー アカウントを承認しないようにするには、このプロパティを に true 設定します。

注意

既定では、CreateUserWizard コントロールは新しいユーザー アカウントに自動的にログを記録します。 この動作は、コントロールの LoginCreatedUser プロパティによって決定されます。 承認されていないユーザーはサイトにログインできないため、 が true の場合DisableCreatedUser、プロパティの値に関係なく、新しいユーザー アカウントはサイトにLoginCreatedUserログインされません。

メソッドを使用して Membership.CreateUser プログラムで新しいユーザー アカウントを作成する場合、未承認のユーザー アカウントを作成するには、新しいユーザー IsApproved のプロパティ値を入力パラメーターとして受け入れるオーバーロードのいずれかを使用します。

手順 3: Email アドレスを確認してユーザーを承認する

ユーザー アカウントをサポートする多くの Web サイトでは、登録時に指定したメール アドレスを確認するまで、新しいユーザーを承認しません。 この検証プロセスは、一意の検証済みメール アドレスを必要とし、サインアップ プロセスに追加の手順を追加するため、ボット、スパマー、およびその他の ne'er-do-well を阻止するために一般的に使用されます。 このモデルでは、新しいユーザーがサインアップすると、確認ページへのリンクを含む電子メール メッセージが送信されます。 リンクにアクセスすることで、ユーザーは電子メールを受信し、提供された電子メール アドレスが有効であることが証明されました。 確認ページは、ユーザーの承認を担当します。 これは自動的に行われる可能性があるため、このページに到達したユーザーを承認するか、 CAPTCHA などの追加情報をユーザーが提供した後でのみ行われます。

このワークフローに対応するには、最初にアカウント作成ページを更新して、新しいユーザーが承認されていないようにする必要があります。 フォルダー内の EnhancedCreateUserWizard.aspx ページを Membership 開き、CreateUserWizard コントロールの DisableCreatedUser プロパティを に true設定します。

次に、CreateUserWizard コントロールを構成して、新しいユーザーにメールを送信し、アカウントを確認する方法について説明します。 特に、クエリ文字列を介して新しいユーザーUserIdVerification.aspx渡して、(まだ作成していない) ページへのリンクを電子メールに含めます。 ページは Verification.aspx 指定されたユーザーを参照し、承認済みとしてマークします。

新しいユーザーへの検証Emailの送信

CreateUserWizard コントロールからメールを送信するには、そのプロパティを MailDefinition 適切に構成します。 前のチュートリアルで説明したように、ChangePassword コントロールと PasswordRecovery コントロールには、CreateUserWizard コントロールと同じように動作するプロパティが含まれていますMailDefinition

注意

プロパティを MailDefinition 使用するには、 で Web.configメール配信オプションを指定する必要があります。 詳細については、「ASP.NET でEmailを送信する」を参照してください。

まず、 フォルダーに という名前 CreateUserWizard.txt の新しい電子メール テンプレートを EmailTemplates 作成します。 テンプレートには次のテキストを使用します。

Hello <%UserName%>! Welcome aboard.

Your new account is almost ready, but before you can login you must first visit:
<%VerificationUrl%>

Once you have visited the verification URL you will be redirected to the login page.

If you have any problems or questions, please reply to this email.

Thanks!

s BodyFileName プロパティを MailDefinition' "~/EmailTemplates/CreateUserWizard.txt" に設定し、そのSubjectプロパティを "個人用 Web サイトへようこそ" に設定します。 アカウントをアクティブ化してください。

電子メール テンプレートには CreateUserWizard.txt プレースホルダーが含まれていることに <%VerificationUrl%> 注意してください。 これは、ページの URL が Verification.aspx 配置される場所です。 CreateUserWizard は、 プレースホルダーと <%Password%> プレースホルダーを<%UserName%>新しいアカウントのユーザー名とパスワードに自動的に<%VerificationUrl%>置き換えますが、組み込みのプレースホルダーはありません。 手動で適切な検証 URL に置き換える必要があります。

これを実現するには、CreateUserWizard のイベントのイベント ハンドラーを作成し、次のSendingMailコードを追加します。

protected void NewUserWizard_SendingMail(object sender, MailMessageEventArgs e)
{
     // Get the UserId of the just-added user
     MembershipUser newUser = Membership.GetUser(NewUserWizard.UserName);

     Guid newUserId = (Guid)newUser.ProviderUserKey;

     // Determine the full verification URL (i.e., http://yoursite.com/Verification.aspx?ID=...)
     string urlBase = Request.Url.GetLeftPart(UriPartial.Authority) + 
          Request.ApplicationPath;

     string verifyUrl = "/Verification.aspx?ID=" + newUserId.ToString();
     string fullUrl = urlBase + verifyUrl;

     // Replace <%VerificationUrl%> with the appropriate URL and querystring
     e.Message.Body = e.Message.Body.Replace("<%VerificationUrl%>", fullUrl);
}

イベントは SendingMail イベントの後に CreatedUser 発生します。つまり、上記のイベント ハンドラーが実行される時点までに、新しいユーザー アカウントが既に作成されています。 新しいユーザーの UserId 値にアクセスするには、 メソッドを Membership.GetUser 呼び出し、入力した を UserName CreateUserWizard コントロールに渡します。 次に、検証 URL が形成されます。 ステートメント Request.Url.GetLeftPart(UriPartial.Authority) は URL の部分を http://yourserver.com 返します Request.ApplicationPath 。アプリケーションがルート化されているパスを返します。 検証 URL は として Verification.aspx?ID=userId定義されます。 その後、これら 2 つの文字列が連結され、完全な URL が形成されます。 最後に、電子メール メッセージの本文 (e.Message.Body) には、すべての出現 <%VerificationUrl%> 箇所が完全な URL に置き換えられます。

その結果、新しいユーザーは未承認です。つまり、サイトにログインできません。 さらに、確認 URL へのリンクを含む電子メールが自動的に送信されます (図 6 を参照)。

新しいユーザーが検証 URL へのリンクを含むEmailを受け取る

図 6: 新しいユーザーが確認 URL へのリンクを含むEmailを受信する (フルサイズの画像を表示する をクリックします)

注意

CreateUserWizard コントロールの既定の CreateUserWizard ステップには、アカウントが作成されたことをユーザーに通知するメッセージが表示され、[続行] ボタンが表示されます。 これをクリックすると、ユーザーはコントロール ContinueDestinationPageUrl の プロパティで指定された URL に移動します。 の EnhancedCreateUserWizard.aspx CreateUserWizard は、 に新しいユーザーを ~/Membership/AdditionalUserInfo.aspx送信するように構成されています。これにより、ユーザーにホームタウン、ホームページの URL、署名の入力を求められます。 この情報はログオンしているユーザーのみが追加できるため、このプロパティを更新して、ユーザーをサイトのホームページ (~/Default.aspx) に送り返すのが理にかなっています。 さらに、 EnhancedCreateUserWizard.aspx ページまたは CreateUserWizard ステップを拡張して、確認メールが送信されたことをユーザーに通知し、このメールの指示に従うまでアカウントはアクティブ化されません。 これらの変更は、リーダーの演習として残します。

検証ページの作成

最後のタスクは、ページを Verification.aspx 作成することです。 このページをルート フォルダーに追加し、マスター ページに Site.master 関連付けます。 以前のほとんどのコンテンツ ページをサイトに追加したので、ContentPlaceHolder を参照 LoginContent する Content コントロールを削除して、コンテンツ ページでマスター ページの既定のコンテンツが使用されるようにします。

Label Web コントロールをページに追加し Verification.aspx 、その ID コントロールを に StatusMessage 設定し、テキスト プロパティをクリアします。 次に、イベント ハンドラーを Page_Load 作成し、次のコードを追加します。

protected void Page_Load(object sender, EventArgs e)
{
     if (string.IsNullOrEmpty(Request.QueryString["ID"]))
          StatusMessage.Text = "The UserId was not included in the querystring...";
     else
     {
          Guid userId;
          try
          {
               userId = new Guid(Request.QueryString["ID"]);
          }

          catch
          {
               StatusMessage.Text = "The UserId passed into the querystring is not in the
                    proper format...";
               return;
          }

          MembershipUser usr = Membership.GetUser(userId);
          if (usr == null)
               StatusMessage.Text = "User account could not be found...";
          else
          {
               // Approve the user
               usr.IsApproved = true;

               Membership.UpdateUser(usr);
               StatusMessage.Text = "Your account has been approved. 
                    Please <a href=\"Login.aspx\">login</a> to the site.";
          }
     }
}

上記のコードの大部分は、querystring を UserId 介して指定された が存在し、有効な Guid 値であり、既存のユーザー アカウントを参照していることを確認します。 これらのチェックがすべて成功すると、ユーザー アカウントが承認されます。それ以外の場合は、適切なステータス メッセージが表示されます。

図 7 は、ブラウザーを Verification.aspx 介してアクセスしたときのページを示しています。

新しいユーザーのアカウントが承認されました

図 7: 新しいユーザーのアカウントが承認されました (クリックするとフルサイズの画像が表示されます)

まとめ

すべてのメンバーシップ ユーザー アカウントには、ユーザーがサイトにログインできるかどうかを決定する 2 つの状態があります。 IsLockedOutIsApproved。 ユーザーがログインするには、これらのプロパティの両方が である true 必要があります。

ユーザーのロックアウト状態は、ハッカーがブルート フォースメソッドを通じてサイトに侵入する可能性を減らすセキュリティ対策として使用されます。 具体的には、特定の時間内に無効なログイン試行が一定数ある場合、ユーザーはロックアウトされます。 これらの境界は、 のメンバーシップ プロバイダー設定 Web.configを使用して構成できます。

承認された状態は、一般的に、何らかのアクションが発生するまで、新しいユーザーのログインを禁止する手段として使用されます。 おそらく、サイトでは、新しいアカウントを管理者が最初に承認するか、手順 3 で説明したように、メール アドレスを確認する必要があります。

幸せなプログラミング!

著者について

複数の ASP/ASP.NET 書籍の著者であり、4GuysFromRolla.com の創設者である Scott Mitchell は、1998 年から Microsoft Web テクノロジと協力しています。 Scott は独立したコンサルタント、トレーナー、ライターとして働いています。 彼の最新の本は サムズ・ティーチ・自分自身 ASP.NET 24時間で2.0です。 Scott は、 または mitchell@4guysfromrolla.com のブログを http://ScottOnWriting.NET介してアクセスできます。

特別な感謝...

このチュートリアル シリーズは、多くの役立つ校閲者によってレビューされました。 今後の MSDN 記事の確認に関心がありますか? もしそうなら、私に行を落としてください mitchell@4GuysFromRolla.com