6

Intranet.NET MVC アプリケーションを開発しています。認証された各ユーザーに関連付けられた場所、ID 番号などのユーザーの詳細を保存する必要があります。

.NET Webform アプリケーションでは、ログインしたユーザーの詳細をセッションに保存していました。しかし、.NET MVC アプリケーションのベスト プラクティスは何ですか?

4

3 に答える 3

1

この猫の皮を剥ぐ方法はいくつかありますが、プロファイル情報をユーザーに添付するのが最もエレガントだと思います。

ユーザーのプロファイル データを保持するプロファイル プロバイダーが必要です。SQL Server には SqlProfileProvider を使用できますが、Microsoft ASP.NET Universal Providers ref: http://www.nuget.org/packages/Microsoft.AspNet.Providersを参照することをお勧めします。

Scott Hanselman からの恥知らずなコピペが続きます。ユーザーの誕生日を追跡するとします。

public class MyCustomProfile : ProfileBase
{
    public DateTime? Birthdate {
        get { return this["Birthdate"] as DateTime?; }
        set { this["Birthdate"] = value; }
    }
}

次に、web.config で設定します。

 <profile inherits="MyApp.Models.MyCustomProfile" defaultprovider="DefaultProfileProvider"></profile>

最後に、現在のユーザーのカスタム プロファイルを次のように取得できます。

var customProfile = HttpContext.Profile as MyCustomProfile;

DateTime? birthday = customProfile.Birthdate;

データ ストアを設定する必要がありますが、それがほとんどの場合必要なことです。詳細については、Scott Hanselman のブログ ( http://www.hanselman.com/blog/IntroducingSystemWebProvidersASPNETUniversalProvidersForSessionMembershipRolesAndUserProfileOnSQLCompactAndSQLAzure.aspx ) を参照してください。

于 2013-08-29T12:18:56.180 に答える
1

MVC でセッション状態を引き続き使用できますが、お勧めできません。パターンとしての MVC は、HTTP のステートレス性を尊重します。

1 つの代替方法は、メモリに情報を格納するだけの Cache を使用することです。詳細については、SO の質問を次に示します。ASP.NET MVC がセッション状態を使用するのはなぜですか?

もう 1 つ: ASP.NET MVC でセッション状態を使用しないようにするのは良い方法ですか? はいの場合、なぜ、どのように?

于 2013-08-29T11:58:35.777 に答える
0

「仕事には適切なツールを使用する」という格言がここに当てはまると思います。データが正しく使用されている限り、セッションにデータを保存することに問題はありません。

MVC は、短期間の状態 (ModelState および TempData) のための他のメカニズムを提供します。それらがニーズを満たしている場合は、それらを使用してください。とにかく、TempDataは舞台裏でSessionStateを使用しています(この質問が示すように)。本当に必要なのは、ユーザー セッションの期間中はデータを保持し、それ以上は保持しないことである場合、SessionSate はそのタスクに適したツールです。

キャッシュを使用することも良いですが、キャッシュの有効期限/無効化を管理する必要があります。キャッシングは、寿命が短いか長いかにかかわらず、セッションやユーザーに依存しないものに最も役立つと思います。

于 2013-08-29T12:47:17.167 に答える