参考までに、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.config ConnectionStrings のエントリです - ここでモデル接続文字列を使用することはできません - SimpleMembershipProvider
はその形式を認識しません! System.Data.SqlClient
を指定する必要があります 接続文字列。
USER_TABLE
姓名などの追加のユーザー情報を保持するためのデータベース内のテーブルです。これは、USER_ID_FIELD を介して自動生成されたテーブルにリンクされています。
USER_ID_FIELD
通常、Users テーブルの主キーです。 int
型でなければなりません .
USER_ID_NAME
ユーザーの一意の名前で、電子メール アドレスの場合もあります。
autoCreateTables
true
に設定されています SimpleMembership が機能するために必要なテーブルがまだ存在しない場合に作成されるようにします。
もちろん、このコードは AccountController
経由でページにアクセスした場合にのみ実行されます 、これは属性によって装飾されているためです。そこにブレークポイントを置いて、動作を確認できます。
これで作業を開始できます。行き詰まった場合は、インターネット アプリケーション テンプレートに従うとよいでしょう。
これがお役に立てば幸いです。