MVC 4でSimpleMembershipを初めて使用しようとしていますが、既存のデータベースとそれに基づいて作成されたEF5モデルがすでにあります。たくさん検索しましたが、自分のケースでそれをどのように使用できるか、またすべてを自分のモデルの下に置くことができるかわかりません。
誰かが私にこれを行う方法のアイデアを与えることができれば素晴らしいでしょう。
ありがとう
MVC 4でSimpleMembershipを初めて使用しようとしていますが、既存のデータベースとそれに基づいて作成されたEF5モデルがすでにあります。たくさん検索しましたが、自分のケースでそれをどのように使用できるか、またすべてを自分のモデルの下に置くことができるかわかりません。
誰かが私にこれを行う方法のアイデアを与えることができれば素晴らしいでしょう。
ありがとう
純粋に参照ポイントとして、ASP.NET MVC 4 Webアプリケーションプロジェクトの新しいインターネットアプリケーションテンプレートを作成することをお勧めします(つまり、[ファイル]> [新しいプロジェクト]を使用)。
AccountController
@ zms6445が言うように、を見ると、InitializeSimpleMembership
属性で装飾されています。この属性の実装は、ルートディレクトリ内のFiltersフォルダーにあるInitializeSimpleMembershipAttribute.csファイルにあります。
ここでは、これはパズルの欠けている部分です-で使用されるように、既存のデータベースを接続する必要がありますSimpleMembershipProvider
。これはあなたが必要とするコードです:
private class SimpleMembershipInitializer
{
public SimpleMembershipInitializer()
{
try
{
if (!WebSecurity.Initialized)
{
WebSecurity.InitializeDatabaseConnection("CONNECTION_STRING_NAME", "USER_TABLE", "USER_ID_FIELD", "USER_NAME_FIELD", autoCreateTables: true);
}
}
catch (Exception ex)
{
throw new InvalidOperationException("Something is wrong", ex);
}
}
}
注意すべき点:
CONNECTION_STRING_NAME
はweb.configConnectionStringsのエントリです-ここではモデル接続文字列を使用できません-はSimpleMembershipProvider
その形式を認識しません!System.Data.SqlClient
接続文字列を指定する必要があります。例:
<add name = "CONNECTION_STRING_NAME" connectionString = "data source = SERVER; initial catalog = DATABASE; user id = USER; password = PASSWORD;" ProviderName = "System.Data.SqlClient" />
USER_TABLE
は、名、名前などの追加のユーザー情報を保持するデータベース内のテーブルです。これは、USER_ID_FIELDを介して自動生成されたテーブルにリンクされています。
USER_ID_FIELD
通常、Usersテーブルの主キーです。タイプである必要がありますint
。
USER_ID_NAME
はユーザーの一意の名前であり、電子メールアドレスの場合があります。
autoCreateTables
true
SimpleMembershipが機能するために必要なテーブルがまだ存在しない場合に作成されるように設定されています。
もちろん、このコードAccountController
は属性によって装飾されているため、を介してページにアクセスした場合にのみ発生します。そこにブレークポイントを設定して、実際の動作を確認できます。
これで始められるはずです。インターネットアプリケーションテンプレートは、行き詰まった場合に従うのに非常に適したテンプレートです。
お役に立てれば。
appSettings タグの web.config で、次の行を追加します。
<add key="enableSimpleMembership" value="true"/>
SimpleMembership が組み込まれているので、ここからは次のように記述するだけです。
[InitializeSimpleMembership]
public クラス AccountController: Controller の上
ユーザーに特定のページへのログインを強制したい場合は、ページコントローラーに書き込みます
[Authorize]
そのテーブルはデータベースに自動的に生成されます。これらのテーブルにさらにフィールドを追加したい場合は、Google で検索するだけです。
詳細については、 http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5-のリンクをご覧ください。 web-forms-and-asp-net-mvc-4-templates.aspx