MVC 4でSimpleMembershipを初めて使用しようとしていますが、既存のデータベースとそれに基づいて作成されたEF5モデルがすでにあります。私はたくさん検索しましたが、自分の場合にそれをどのように使用できるか、またすべてを自分のモデルの下に置くことができるかを見つけることができません。
誰かが私にこれを行う方法のアイデアを与えることができれば素晴らしいでしょう。
ありがとう
純粋に参照点として、ASP.NET MVC 4 Webアプリケーションプロジェクトの新しいインターネットアプリケーションテンプレートを作成することをお勧めします(つまり、[ファイル]> [新しいプロジェクト]を使用)。
@ zms6445が言うように、AccountController
を見ると、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
はユーザーの一意の名前であり、メールアドレスの場合があります。
SimpleMembershipが機能するために必要なテーブルがまだ存在しない場合に作成されるようにするには、autoCreateTables
をtrue
に設定します。
もちろん、このコードはAccountController
を介してページにアクセスした場合にのみ発生します。これは、属性によって装飾されているためです。そこにブレークポイントを設定して、実際の動作を確認できます。
これで始められるはずです。インターネットアプリケーションテンプレートは、行き詰まった場合に従うのに非常に適したテンプレートです。
お役に立てれば。
AppSettingsタグのweb.configで、次の行を追加します
<add key="enableSimpleMembership" value="true"/>
SimpleMembershipが組み込まれているので、ここから書く必要があります
[InitializeSimpleMembership]
パブリッククラスAccountControllerの上:Controller
ユーザーに特定のページへのログインを強制したい場合は、ページコントローラーに書き込みます
[Authorize]
そのテーブルはデータベースに自動的に生成されます。これらのテーブルにさらにフィールドを追加する場合は、単にグーグルで検索する必要があります。
詳細については、こちらのリンクをご覧ください 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