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

作成者: Scott Mitchell

注意

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

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

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

はじめに

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

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

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

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

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

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

注意

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

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

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

HyperLinkField では、

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

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

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

ページのUserInformation.aspx作成

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

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

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

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

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

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

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     If Not Page.IsPostBack Then
          ' If querystring value is missing, send the user to ManageUsers.aspx
          Dim userName As String = Request.QueryString("user")
          If String.IsNullOrEmpty(userName) Then
               Response.Redirect("ManageUsers.aspx")
          End If

          ' Get information about this user
          Dim usr As MembershipUser = Membership.GetUser(userName)
          If usr Is Nothing Then
               Response.Redirect("ManageUsers.aspx")

          End If

          UserNameLabel.Text = usr.UserName
          IsApproved.Checked = usr.IsApproved

          If usr.LastLockoutDate.Year < 2000 Then
               LastLockoutDateLabel.Text = String.Empty
          Else
               LastLockoutDateLabel.Text = usr.LastLockoutDate.ToShortDateString()
               UnlockUserButton.Enabled = usr.IsLockedOut
          End If
     End If
End Sub

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

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

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

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

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

Protected Sub IsApproved_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles IsApproved.CheckedChanged
     'Toggle the user's approved status
     Dim userName As String = Request.QueryString("user")
     Dim usr As MembershipUser = Membership.GetUser(userName)
     usr.IsApproved = IsApproved.Checked
     Membership.UpdateUser(usr)

     StatusMessage.Text = "The user's approved status has been updated."

End Sub

Protected Sub UnlockUserButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles UnlockUserButton.Click
     'Unlock the user account
     Dim userName As String = Request.QueryString("user")
     Dim usr As MembershipUser = Membership.GetUser(userName)
     usr.UnlockUser()
     UnlockUserButton.Enabled = False

     StatusMessage.Text = "The user account has been unlocked."
End Sub

ページの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!

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

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

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

Protected Sub NewUserWizard_SendingMail(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MailMessageEventArgs) Handles NewUserWizard.SendingMail
     'Get the UserId of the just-added user
     Dim newUser As MembershipUser = Membership.GetUser(NewUserWizard.UserName)
     Dim newUserId As Guid = CType(newUser.ProviderUserKey, Guid)

     ' Determine the full verification URL (i.e., http://yoursite.com/Verification.aspx?ID=...)
     Dim urlBase As String = Request.Url.GetLeftPart(UriPartial.Authority) & Request.ApplicationPath
     Dim verifyUrl As String = "/Verification.aspx?ID=" + newUserId.ToString()
     Dim fullUrl As String = urlBase & verifyUrl

     ' Replace <%VerificationUrl%> with the appropriate URL and querystring

     e.Message.Body = e.Message.Body.Replace("<%VerificationUrl%>", fullUrl)
End Sub

イベントは 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 Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     If String.IsNullOrEmpty(Request.QueryString("ID")) Then
          StatusMessage.Text = "The UserId was not included in the querystring..."
     Else
          Dim userId As Guid
          Try
               userId = New Guid(Request.QueryString("ID"))
          Catch
               StatusMessage.Text = "The UserId passed into the querystring is not in the proper format..."

               Exit Sub
          End Try

          Dim usr As MembershipUser = Membership.GetUser(userId)
          If usr Is Nothing Then
               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."

          End If
     End If
End Sub

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

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

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

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

まとめ

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

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

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

幸せなプログラミング!

著者について

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

特別な感謝...

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