16

MVC 4でSimpleMembershipを初めて使用しようとしていますが、既存のデータベースとそれに基づいて作成されたEF5モデルがすでにあります。たくさん検索しましたが、自分のケースでそれをどのように使用できるか、またすべてを自分のモデルの下に置くことができるかわかりません。

誰かが私にこれを行う方法のアイデアを与えることができれば素晴らしいでしょう。

ありがとう

4

2 に答える 2

16

純粋に参照ポイントとして、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);
        }
    }
}

注意すべき点:

  1. 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" />

  2. USER_TABLEは、名、名前などの追加のユーザー情報を保持するデータベース内のテーブルです。これは、USER_ID_FIELDを介して自動生成されたテーブルにリンクされています。

  3. USER_ID_FIELD通常、Usersテーブルの主キーです。タイプである必要がありますint

  4. USER_ID_NAMEはユーザーの一意の名前であり、電子メールアドレスの場合があります。

  5. autoCreateTablestrueSimpleMembershipが機能するために必要なテーブルがまだ存在しない場合に作成されるように設定されています。

もちろん、このコードAccountControllerは属性によって装飾されているため、を介してページにアクセスした場合にのみ発生します。そこにブレークポイントを設定して、実際の動作を確認できます。

これで始められるはずです。インターネットアプリケーションテンプレートは、行き詰まった場合に従うのに非常に適したテンプレートです。

お役に立てれば。

于 2013-03-05T21:04:12.683 に答える
3

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

于 2013-03-01T15:34:40.217 に答える