C# 如何使用Windows身份基础在服务器上存储用户数据而不是cookie

C# 如何使用Windows身份基础在服务器上存储用户数据而不是cookie,c#,asp.net-mvc,asp.net-identity,wif,windows-identity,C#,Asp.net Mvc,Asp.net Identity,Wif,Windows Identity,我正在使用WIF开发一个MVC应用程序 我正在尝试使用以下方法将一些会话变量存储在ClaimsIdentity中: ClaimsIdentity identity = HttpContext.User.Identity as ClaimsIdentity; identity.AddClaim(new Claim("foo", "bar")); 这似乎把所有的东西都储存在饼干里 我正试图找出如何将这些数据存储在服务器上。我环顾四周,但没有找到任何真正有用的东西(说到WIF,我完全是个新手) 有没

我正在使用WIF开发一个MVC应用程序

我正在尝试使用以下方法将一些会话变量存储在
ClaimsIdentity
中:

ClaimsIdentity identity = HttpContext.User.Identity as ClaimsIdentity;
identity.AddClaim(new Claim("foo", "bar"));
这似乎把所有的东西都储存在饼干里

我正试图找出如何将这些数据存储在服务器上。我环顾四周,但没有找到任何真正有用的东西(说到WIF,我完全是个新手)


有没有一种简单的方法可以做到这一点?

您可以将身份验证模块设置为引用模式,以便将声明存储在服务器上的会话中-这样,cookie只包含一个映射回声明的标识符

要做到这一点,最简单的方法是处理
SessionSecurityTokenCreated
事件,并在令牌的创建点设置一个属性,这可以通过在
全局.asax中实现以下方法来实现:

void WSFederationAuthenticationModule_SessionSecurityTokenCreated(object sender, SessionSecurityTokenCreatedEventArgs e) {
    e.SessionToken.IsReferenceMode = true;
}

作为参考,请参见

这与您想要做的类似吗??看看之前发布的@DJKRAZE@DJKRAZE,我不这么认为,除非我遗漏了什么,否则这并不能解决存储介质(cookie vs server)的问题。我认为您可以实现类似的功能,并将其存储在客户端,就像链接中的代码所做的那样。。您能否将其存储在会话对象中。。?