1)Simple Membership の UserProfile テーブル部分が少し複雑だと思いますが (良い意味で)、私のアプリではうまく機能しています。
シンプル メンバーシップの規則は、UserId と UserName の 2 つのフィールドを持つ「UserProfile」という名前の UserProfile テーブルを作成することです。Filters/InitializeSimpleMembershipAttribute.cs の WebSecurity.InitializeDatabaseConnection() 行を変更することにより、UserProfile の別のテーブル名または別の UserId および UserName フィールド名を構成できます。追加のフィールドを使用して UserProfile テーブルを作成できます。これは、Simple Membership が最初に実行されたときにそのテーブルが見つかった場合に、Simple Membership によって使用されます。既定の構成では、アプリで初めて SimpleMembership を実行すると、Filters/InitializeSimpleMembershipAttribute.cs で指定された UserProfile テーブルの詳細を含むデータベース テーブルが作成されます。
そのため、Simple Membership を最初に呼び出す前に、必要な UserProfile テーブル (そのテーブルに必要なすべてのフィールドを含む) を作成するのがコツです。これは、EF 移行によって作成することも、データベース スクリプトによって作成することも、SSMS で手動で作成することもできます。
シンプル メンバーシップのコードを詳しく知りたい場合は、 http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/5cb74eb3b2f3#src/WebMatrix.WebData/WebSecurity.csおよびhttp://aspnetwebstack.codeplex.com/を参照してください。 SourceControl/changeset/view/5cb74eb3b2f3#src/WebMatrix.WebData/SimpleMembershipProvider.cs .
2) ロールとグローバル権限に関するあなたの指摘に同意します。AddUsersToRoles と RemoveUsersFromRoles ( http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/5cb74eb3b2f3#src/WebMatrix.WebData/SimpleRoleProvider.cs内) を使用して、使用するプロジェクトに従ってログイン時のユーザーのロールを変更できます。 .
etc)Simple Membership の拡張に関する良い記事を知りませんが、Simple Membership は原則として、ASP.NET Membership Provider を拡張する Extended Membership Provider を拡張します。適切なポイントでジャンプインできるはずです。
ロバートのコメントに応じて編集:
Entity Framework が UserProfile クラスに追加された列を作成しなかった理由に対する直接的な答えとして、これは、アプリ固有のテーブルの作成が実行される前に、SimpleMembership の初期化によって UserProfile テーブルが既に作成されている場合に発生します。その理由は、SimpleMembership には、SimpleMembership がそのテーブルを作成するたびに使用される UserProfile テーブルの定義が組み込まれているためです。UserProfile テーブルを作成するタイミングは重要であるため、SimpleMembership の初期化が実行される前にアプリ固有のテーブルが作成されていることを確認する必要があります。