アプリケーションのスケーラビリティが低下するため、セッション状態を使用してユーザー情報やセッション データを保存することは避けます。
ユーザー名、表示名、電子メール アドレスなどを保存する場合は、クレーム ベース認証をお勧めします。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);