1

私のアプリケーションは、EF 5 Code First で作成されたドメイン モデルを持つ MVC4 アプリケーションです。アプリケーションには認証/承認が必要で、既定の ASP.NET メンバーシップ プロバイダーを使用したいと考えています。

これを念頭に置いて、aspnet_reqsql ユーティリティを使用して、ASP.NET の既定のメンバーシップ プロバイダーに必要なすべてのテーブルを追加しました。

ただし、私のアプリケーションは、メンバーシップ プロバイダーによって既定で提供されるものよりも多くのユーザーに関する情報を格納する必要があります。例えば:

  • ファーストネーム
  • 苗字
  • 生年月日
  • 住所 (別の列に分割)

これらは、メンバーシップ プロバイダー テーブルには存在しません。そこで、不足しているすべての列を users テーブルに追加し、Addresses テーブルも作成して、User と Address の間の関係を作成しました。

次に、Registration View Model に移動し、欠落しているデータ フィールドを追加しました。次に、AccountController に移動し、ユーザーを登録するために呼び出されるメソッドを確認しました。これです:

    //
    // Summary:
    //     Creates a new user profile entry and a new membership account.
    //
    // Parameters:
    //   userName:
    //     The user name.
    //
    //   password:
    //     The password for the user.
    //
    //   propertyValues:
    //     (Optional) A dictionary that contains additional user attributes. The default
    //     is null.
    //
    //   requireConfirmationToken:
    //     (Optional) true to specify that the user account must be confirmed; otherwise,
    //     false. The default is false.
    //
    // Returns:
    //     A token that can be sent to the user to confirm the user account.
    //
    // Exceptions:
    //   System.InvalidOperationException:
    //     The WebMatrix.WebData.SimpleMembershipProvider.Initialize(System.String,System.Collections.Specialized.NameValueCollection)
    //     method was not called.-or-The Overload:WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection
    //     method was not called.-or-The WebMatrix.WebData.SimpleMembershipProvider
    //     membership provider is not registered in the configuration of your site.
    //     For more information, contact your site's system administrator.
    public static string CreateUserAndAccount(string userName, string password, object propertyValues = null, bool requireConfirmationToken = false);

この方法は私をとても混乱させます!データベースへのデータ挿入のロジックが表示されることを期待していたので、それを編集して追加し、メソッドが新しく追加されたフィールドも処理できるようにしましたが、それがすべて欠落しています!

私は何が欠けていますか?希望するタイプの登録を行うにはどうすればよいですか?

4

1 に答える 1

2
  1. まず、Entity Framework を使用する新しいASP.NET ユニバーサル プロバイダーを使用します。
  2. カスタム列を追加する場合は、次のような新しいテーブルを作成し、そのカスタム データに基づいてUserId自分で取得します。

注:を使用する場合、メンバーシップ プロバイダーによって作成されたテーブルの列を変更 (追加/削除) することはできませんDefaultMembershipProvider

つまり、列を追加し始めると、実装する必要がありますCustomMembersipProvider。初めての方にはお勧めしませんMembershipProvider

ここに画像の説明を入力

于 2013-05-29T15:45:47.203 に答える