2

ASP.Net MVC 4カミソリ構文でWebアプリケーションを開発しています。クラウド、おそらく Azure にデプロイする必要があります。私は静かに混乱していlogin scheme of MVCます。複数に取り組む必要があるため、ASP.Net が提供するschemasを使用していません。membership

私はセッションのメンテナンスを知っており、Web フォームで使用しましたが、セッションにはクラウドに関する深刻な問題がいくつかあります。

ユーザー名とセッションデータを保存する最良の方法は何ですか?

4

1 に答える 1

2

アプリケーションのスケーラビリティが低下するため、セッション状態を使用してユーザー情報やセッション データを保存することは避けます。

ユーザー名、表示名、電子メール アドレスなどを保存する場合は、クレーム ベース認証をお勧めします。Brock Allen は、開始するための優れた紹介記事を書きました:フォーム認証を WIF のセッション認証モジュール (SAM) に置き換えて、クレーム対応 ID を有効にします

主なアイデアは、Cookie を配布することです (フォーム認証の場合と同様)。

    Claim[] claims = LoadClaimsForUser(username);
    var id = new ClaimsIdentity(claims, "Forms");
    var cp = new ClaimsPrincipal(id);

    var token = new SessionSecurityToken(cp);
    var sam = FederatedAuthentication.SessionAuthenticationModule;
    sam.WriteSessionTokenToCookie(token);

そして、この Cookie は、電子メール アドレスなどの 1 つ以上のクレームを含めることができる ClaimIdentity を表します...

private Claim[] LoadClaimsForUser(string username) {
    var claims = new Claim[]
    {
        new Claim(ClaimTypes.Name, username),
        new Claim(ClaimTypes.Email, "username@company.com"),
        new Claim(ClaimTypes.Role, "RoleA"),
        new Claim(ClaimTypes.Role, "RoleB"),
        new Claim(OfficeLocationClaimType, "5W-A1"),
    };
    return claims; }

セッション データに関しては、Windows Azure In-Role Caching または Windows Azure Caching Service を検討することをお勧めします。セッション状態をキャッシュに保存できるセッション状態プロバイダーもあります: http://msdn.microsoft.com/en-us/library/windowsazure/gg185668.aspx

ただし、次のようにキャッシュキーをいじることで、セッション状態を使用せずに自分で簡単にこれを行うことができます。

myCache.Put(user.Id + "_Friends", friendsList);
于 2013-11-14T08:39:40.297 に答える