我有一个asp应用程序,我需要在注销操作中删除所有当前会话的cookie:
public ActionResult Logout()
{
Upload.Models.CompteModels.Connected = false;
return RedirectToAction("Login", "Account");
}
现在我使用带有布尔值的静态类CompteModels
来测试用户是否在进行身份验证,但这并不高效。所以我认为我必须在我退出时删除所有cookie。
我该怎么做?
答案 0 :(得分:3)
静态属性在所有用户之间共享,因此使用静态属性来确定用户是否已登录将无法正常工作,因为这将注销所有用户或将其登录。
您可以使用Session.Abandon
放弃会话,或使用HttpResponse.Cookies
集合删除Cookie,并为其过期写一个Cookie。
答案 1 :(得分:2)
如果您的意思是删除会话数据并删除会话Cookie,请参阅here了解如何执行此操作。
答案 2 :(得分:1)
您可以创建一个名为LoggedIn的会话变量或类似的东西,并在您的注销操作中清除它。然后在您的登录操作中,您需要检查此会话。
public ActionResult Logout()
{
Upload.Models.CompteModels.Connected = false;
Session.Remove("LoggedIn");
return RedirectToAction("Login", "Account");
}
public ActionResult Login()
{
// check for session var, redirect to landing page maybe?
if(Session["LoggedIn"] == null)
{
RedirectToAction("Home", "Index");
}
else
{
Session.Add("LoggedIn", true);
}
return RedirectToAction("TargetPage", "TargetAction");
}
只有一个想法,取决于您希望用户被重定向到的位置,TargetPage
可能是管理区域或类似的东西。