0

我有一个 asp 应用程序,我需要在注销操作中删除所有当前会话的 cookie:

 public ActionResult Logout()
        {
            Upload.Models.CompteModels.Connected = false;
            return RedirectToAction("Login", "Account");
         }

现在我使用带有布尔值的静态类CompteModels来测试用户是否正在验证,但它不是有效的。所以我认为我必须在注销时删除所有 cookie。

我该怎么做?

4

3 回答 3

3

静态属性在所有用户之间共享,因此使用静态属性来确定用户是否已登录将无法正常工作,因为这会注销所有用户,或者让他们登录。

您可以使用该集合放弃会话Session.Abandon或删除 cookie HttpResponse.Cookies,并向其写入过期的 cookie。

于 2013-05-21T15:41:28.190 回答
2

如果您的意思是删除会话数据并删除会话 cookie,请参阅此处了解如何操作。

于 2013-05-21T15:42:52.100 回答
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可能是管理区域或类似的东西。

于 2013-05-21T15:44:53.760 回答