我正在使用WIF开发MVC应用程序。
我正在尝试使用以下内容将一些会话变量存储在ClaimsIdentity
中:
ClaimsIdentity identity = HttpContext.User.Identity as ClaimsIdentity;
identity.AddClaim(new Claim("foo", "bar"));
这似乎把所有东西都储存在饼干里。
我正在想办法把这些数据存储在服务器上。我环顾四周,但没有发现任何真正有用的东西(说到WIF,我完全是个新手)。
有简单的方法吗?
您可以将身份验证模块设置为引用模式,以便将声明存储在服务器上的会话中——这样,cookie只包含一个映射回声明的标识符。
最简单的方法是处理SessionSecurityTokenCreated
事件,并在创建令牌时在令牌上设置属性,这可以通过在global.asax
中实现以下方法来完成:
void WSFederationAuthenticationModule_SessionSecurityTokenCreated(object sender, SessionSecurityTokenCreatedEventArgs e) {
e.SessionToken.IsReferenceMode = true;
}
有关参考,请参阅msdn 上的WIF会话管理概述