0

我的公司已将一些 Web 开发分包出去,他们创建的 ASP.NET 站点有一些我认为有问题的功能。该网站的一部分是登录和“记住我”功能。他们可以在登录网站时选择“记住我”。登录后,退出的唯一方法是清除本地缓存并删除站点创建的所有 cookie。(他们有一个注销链接,但它没有做任何事情)。所以基本上,一旦你登录,你就终生登录。

我告诉他们这是错误的,用户明确的“注销”应该始终终止用户会话并删除任何类型的缓存登录信息。

所以我的问题是:登录“记住我”功能是否有标准?

编辑: 所以,重申我的问题细节。我不是在问您如何注销用户。对我来说,注销时会终止用户会话和任何 cookie,这完全有道理。

我的问题是有任何情况,而当用户单击“注销”按钮时,它什么也不做。换句话说,如果用户登录并选中“记住我”按钮,用户是否应该永远登录,除了清除用户缓存之外没有其他方法可以注销?这对我来说似乎很奇怪,但我们聘请的承包商似乎就像早上升起的太阳一样正常。

4

1 回答 1

2

好吧,我在 OpenId 和 MVC 上遇到了类似的问题,所以我找到了这个片段:

   public ActionResult LogOff()
        {
            FormsAuthentication.SignOut();
            Session.Abandon();

            HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, "");
            cookie1.Expires = DateTime.Now.AddYears(-1);
            Response.Cookies.Add(cookie1);

            HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", "");
            cookie2.Expires = DateTime.Now.AddYears(-1);
            Response.Cookies.Add(cookie2);

            return RedirectToAction("Index", "Home");
        }

这将清除会话和 cookie,即使它们被 FormsAuthentication 标记为持久性,我认为这在选中“记住”时会发生,希望它有所帮助!

更新:

记住我的功能只是为了让您不会得到会话超时并在一段时间后自动退出。注销应该真正注销用户。

于 2012-07-03T13:07:27.947 回答