新しいユーザー アカウントを作成する方法
サンプル コードのダウンロード (aspnettips_CreateUser.msi, 223 KB)
※このサンプルをお使いいただくためには、Visual Studio 2005 が必要です。
ASP.NET 2.0 では、CreateUserWizard コントロールを利用することによって、ユーザー登録ページを簡単に作成できるようになりました。もちろん、従来の ASP.NET のようにテキストボックスやボタンなどのコントロールとプログラムコードを組み合わせて実装することも可能です。さらに ASP.NET 2.0 では、MemberShip API を利用することで、従来の ASP.NET よりも簡単に実装できてしまいます。
そこで今回は、テキストボックスとボタンを配置した Web フォームから 新規ユーザーを登録する Web アプリケーション(図1)を作成する方法を紹介します。

図1 新規ユーザー登録画面
「ユーザー登録」ボタンをクリックすると、新しいユーザー アカウントが所定のデータ ストアに追加されます。「ユーザー登録」ボタンの実装コードは以下のとおりです。
Protected Sub btn_CreateUser_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles btn_CreateUser.Click
Dim status As MembershipCreateStatus
Dim newuser As MembershipUser
Try
newuser = Membership.CreateUser(txt_UserName.Text, _
txt_Password.Text, _
txt_Email.Text, _
txt_Question.Text, _
txt_Answer.Text, _
False, _
status)
If IsNothing(newuser) Then
txt_ErrorMessage.Text = GetErrMessage(status, txt_UserName.Text)
txt_ErrorMessage.Visible = True
Else
Response.Redirect("Top.aspx")
End If
Catch ex As Exception
txt_ErrorMessage.Text = "ユーザー作成中に例外が発生しました。"
txt_ErrorMessage.Visible = True
End Try
End Sub
|
リスト1
このように、Membership クラスから CreateUser メソッドを呼び出し、ユーザー名・パスワード・メールアドレスといった一連の引数を渡すだけでユーザーの登録が実現できてしまいます。CreateUser メソッドには 4 つのオーバーロードがありますが、サンプルのように最終引数(参照渡し)からユーザーの作成に失敗した原因を取得することも可能です。
この例では、エラーメッセージを作成するための GetErrMessage 関数を追加します(リスト2)。引数 status の値は MembershipCreateStatus 列挙体で定義されているもので、ユーザー作成の可否やその原因を取得することができます。
Private Function GetErrMessage(ByVal status As MembershipCreateStatus, _
ByVal strUserName As String) As String
Dim strMessage As String = ""
Select Case status
Case MembershipCreateStatus.InvalidUserName
strMessage = "ユーザー名の入力が不適切です。"
Case MembershipCreateStatus.InvalidPassword
strMessage = "パスワードの入力が不適切です。"
Case MembershipCreateStatus.InvalidEmail
strMessage = "メールアドレスの入力が不適切です。"
Case MembershipCreateStatus.InvalidQuestion
strMessage = "パスワード回復用の質問の入力が不適切です。"
Case MembershipCreateStatus.InvalidAnswer
strMessage = "パスワード回復用の質問に対する返答が不適切です。"
Case MembershipCreateStatus.DuplicateUserName
strMessage = "ユーザー名「" & strUserName & "」は既に登録されています。"
Case MembershipCreateStatus.DuplicateEmail
strMessage = "同じメールアドレスをもつユーザーが既に登録されています。"
Case Else
strMessage = "ユーザー作成中にエラーが発生しました。"
End Select
Return strMessage
End Function
|
リスト2
図1 の画面に必要な情報を入力した後(図2 の状態)で、「ユーザー作成」ボタンをクリックすると、データ ストア上にユーザー アカウントが作成され、さらに Top.aspx へと画面が遷移します。

図2 データを入力したところ
ただし、登録済のユーザー名を指定した場合など、ユーザーの作成に失敗した場合には、同じ画面上にエラーメッセージが表示されます(図3)。

図3 登録済ユーザーと同じ名前のユーザーを登録しようとした場合
|