Silverlight をインストールするには、ここをクリックします*
Japan変更|すべてのMicrosoft のサイト|サインイン
MSDN
|MSDN ライブラリ|デベロッパー センター|ダウンロード情報|開発ツール製品|コミュニティ|ご意見・ご要望|サイトマップ
MSDN Home   MSDN Home
MSDN Home > ASP.NET デベロッパー センター ホーム > 技術情報 > プログラミング Tips > 新しいユーザー アカウントを作成する方法

新しいユーザー アカウントを作成する方法


サンプル コードのダウンロード (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 登録済ユーザーと同じ名前のユーザーを登録しようとした場合


Microsoft