ユーザー アカウントをロック解除し、承認する (VB)
注意
この記事が作成されて以来、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.aspx
を UserInformation.aspx
使用しましょう。 ここでの考え方は、 ManageUsers.aspx
システム内のユーザー アカウントを一覧表示し UserInformation.aspx
、管理者が特定のユーザーの承認済みおよびロックアウトされた状態を管理できるようにします。 最初のビジネスの順序は、 で ManageUsers.aspx
GridView を拡張し、リンクの列としてレンダリングされる HyperLinkField を含めます。 各リンクが を UserInformation.aspx?user=UserName
指す必要があります。ここで 、UserName は編集するユーザーの名前です。
注意
パスワードの回復と変更に関するチュートリアルのコードをダウンロードした場合、ページには既に一連の "管理" リンクがManageUsers.aspx
含まれており、UserInformation.aspx
ページには選択したユーザーのパスワードを変更するためのインターフェイスが用意されています。 このチュートリアルに関連付けられているコードでその機能をレプリケートしないことにしました。これは、Membership API を回避し、SQL Server データベースで直接操作してユーザーのパスワードを変更することで機能するためです。 このチュートリアルは、ページから UserInformation.aspx
最初から始まります。
GridView への "管理" リンクのUserAccounts
追加
ページを 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=Bruce
Dave の "管理" リンクは を指します UserInformation.aspx?user=Dave
。
図 1: HyperLinkField は、各ユーザー アカウントの "管理" リンクを追加します (フルサイズの画像を表示する をクリックします)。
ページのユーザー インターフェイスとコード UserInformation.aspx
をすぐに作成しますが、まず、ユーザーのロックアウトおよび承認された状態をプログラムで変更する方法について説明します。 クラスには MembershipUser
および IsApproved
プロパティがありますIsLockedOut
。 IsLockedOut
プロパティは読み取り専用です。 プログラムによってユーザーをロックアウトするメカニズムはありません。ユーザーのロックを解除するには、 クラスの 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
クリアし、そのプロパティをCssClass
にImportant
設定します。 (次の場合)Important
CSS クラスは、スタイルシート ファイルでStyles.css
定義されています。対応するテキストが大きく赤いフォントで表示されます)。
これらのコントロールを追加すると、Visual Studio のデザイン ビューは図 2 のスクリーン ショットのようになります。
図 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
表示され、IsApproved
CheckBox がプロパティ値にIsApproved
基づいてチェックされます。
オブジェクトの LastLockoutDate
プロパティはMembershipUser
、ユーザーが最後にDateTime
ロックアウトされた日時を示す値を返します。ユーザーがロックアウトされたことがない場合、返される値はメンバーシップ プロバイダーによって異なります。 新しいアカウントが作成されると、 によってSqlMembershipProvider
テーブルのaspnet_Membership
LastLockoutDate
フィールドが に1754-01-01 12:00:00 AM
設定されます。 上記のコードでは、 プロパティが 2000 年より前に発生した場合LastLockoutDate
は に空の文字列LastLockoutDateLabel
が表示されます。それ以外の場合は、プロパティのLastLockoutDate
日付部分が Label に表示されます。 UnlockUserButton
の Enabled
プロパティは、ユーザーのロックアウト状態に設定されます。つまり、このボタンは、ユーザーがロックアウトされている場合にのみ有効になります。
ブラウザーを使用してページを UserInformation.aspx
テストします。 もちろん、まず、管理する ManageUsers.aspx
ユーザー アカウントを選択する必要があります。 に UserInformation.aspx
到着すると、CheckBox はユーザーが承認された場合にのみチェックされることに注意してください IsApproved
。 ユーザーがロックアウトされたことがある場合は、最後にロックアウトされた日付が表示されます。 [ユーザーのロック解除] ボタンは、ユーザーが現在ロックアウトされている場合にのみ有効になります。CheckBox を IsApproved
オンまたはオフにするか、[ユーザーのロック解除] ボタンをクリックするとポストバックが発生しますが、これらのイベントのイベント ハンドラーをまだ作成していないため、ユーザー アカウントに変更は加えられません。
Visual Studio に戻り、CheckBox のイベントと Button Click
のCheckedChanged
イベントのイベント ハンドラーIsApproved
をUnlockUser
作成します。 イベント ハンドラーで 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
プロパティが正常に変更されたことを示す簡単なメッセージが表示されます。
図 3: Chris は承認されていません (フルサイズの画像を表示する をクリックします)
次に、ログアウトし、アカウントが承認されていないユーザーとしてログインを試みます。 ユーザーは承認されていないため、ログインできません。 既定では、理由に関係なく、ユーザーがログインできない場合は、Login コントロールに同じメッセージが表示されます。 ただし、メンバーシップ ユーザー ストアに対するユーザー資格情報の検証に関するチュートリアルでは、より適切なメッセージを表示するための Login コントロールの強化について説明しました。 図 4 に示すように、Chris には、アカウントがまだ承認されていないため、ログインできないことを説明するメッセージが表示されます。
図 4: Chris はアカウントが承認されていないためログインできません (クリックするとフルサイズの画像が表示されます)
ロックアウト機能をテストするには、承認されたユーザーとしてログインを試みますが、正しくないパスワードを使用してください。 ユーザーのアカウントがロックアウトされるまで、必要な回数だけこのプロセスを繰り返します。Login コントロールも更新され、ロックアウトされたアカウントからログインしようとした場合にカスタム メッセージが表示されるようになりました。 ログイン ページに次のメッセージが表示され始めると、アカウントがロックアウトされていることがわかります。"無効なログイン試行が多すぎるため、アカウントがロックアウトされました。 アカウントのロックを解除するには、管理者に問い合わせてください。
ページに ManageUsers.aspx
戻り、ロックアウトされたユーザーの [管理] リンクをクリックします。 図 5 に示すように、[ユーザーのロック解除] LastLockedOutDateLabel
ボタンが有効になっている必要がある値が表示されます。 [ユーザーのロック解除] ボタンをクリックして、ユーザー アカウントのロックを解除します。 ユーザーのロックを解除すると、ユーザーは再度ログインできるようになります。
図 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 コントロールを構成して、新しいユーザーにメールを送信し、アカウントを確認する方法について説明します。 特に、クエリ文字列を介して新しいユーザーUserId
をVerification.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 を参照)。
図 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 つの状態があります。 IsLockedOut
と IsApproved
。 ユーザーがログインするには、これらのプロパティの両方が である 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
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示