我正在使用Windows Identity Foundation来管理我们网站的登录。
当用户登录时,我正在使用他的请求中的某些信息进行索赔。 一切正常,但现在我需要管理这个场景:
所以我的问题是:
我试过这段代码:
public void ExpireClaims(HttpContextBase httpContextBase)
{
var module =
httpContextBase.ApplicationInstance.Modules["WSFederationAuthenticationModule"] as
WSFederationAuthenticationModule;
if (module == null)
{
return;
}
module.SignOut(true);
}
但是模块总是空的。
我试过这个:
public void FederatedSignOut(string replyUrl)
{
WSFederationAuthenticationModule.FederatedSignOut(null, new Uri(replyUrl));
}
但是当我这样做时,我得到一个空引用execption。
非常感谢。
答案 0 :(得分:8)
基本上签出就是删除cookie所以:
FormsAuthentication.SignOut
或
FederatedAuthentication.SessionAuthenticationModule.SignOut
或
FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie
会奏效。
或者使用FederatedPassiveSignInStatus
(应该在您的工具箱中)。将属性SignOutAction
设置为FederatedSignOut
,控件也会清除您的STS会话。