您好我的应用程序有两种类型的登录,一种是Facebook,另一种是正常登录。为了区分它们并相应地带来值,我已经使用了cookie并在这样的注销事件中清除它们。
但是当我通过电子邮件和密码登录然后注销并再次通过Fb登录时,UserCookie cookie仍然存在并且再次进入第一个if语句
public ActionResult Logout(string returnUrl = "/")
{
try
{
FormsAuthentication.SignOut();
}
finally
{
if (Request.Cookies["UserCookie"] != null)
{
Request.Cookies["UserCookie"].Expires = DateTime.Now;
Request.Cookies["UserCookie"].Value = "";
}
if (Request.Cookies["fbUserUserID"] != null)
{
Request.Cookies["fbUserUserID"].Expires = DateTime.Now;
Request.Cookies["fbUserUserID"].Value = "";
}
if (Request.Cookies["fbFirstName"] != null)
{
Request.Cookies["fbFirstName"].Expires = DateTime.Now;
Request.Cookies["fbFirstName"].Value = "";
}
FederatedAuthentication.WSFederationAuthenticationModule.SignOut(true);
}
//return Redirect(returnUrl);
return View();
}
在我看来,我正在检查像这样的cookie
@if (HttpContext.Current.Request.Cookies["UserCookie"] != null && HttpContext.Current.Request.Cookies["UserCookie"].Value != "")
{
}
else if (HttpContext.Current.Request.Cookies["fbFirstName"] != null && HttpContext.Current.Request.Cookies["fbFirstName"].Value != "")
{
}
但它没有清除我猜它显示空字符串""对于控制器中的cookie值,但我不知道发生了什么。
我有什么遗失的东西吗?
答案 0 :(得分:1)
Request.Cookies
用于读取从客户端到服务器的cookie。如果您想设置 cookie,则需要使用Response.Cookies
,以便服务器发送服务器响应的cookie信息。
尝试修改代码,以便在尝试取消设置Cookie时使用Response.Cookies
代替Request.Cookies
。