网站登录的“记住我”选项是否有标准

时间:2012-07-03 12:33:30

标签: asp.net authentication

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

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

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

修改 所以,重申我的问题具体细节。我不是问你如何记录用户。对我来说完全有道理,当你退出时会杀死用户会话和任何cookie。

我的问题是有任何情况,而当用户单击“注销”按钮时,它什么都不做。换句话说,如果用户登录并检查“记住我”按钮,用户是否应该永远登录,除了清除用户缓存之外无法注销?这对我来说似乎很奇怪,但我们雇佣的承包商似乎与早晨的太阳升起一样正常。

1 个答案:

答案 0 :(得分: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标记为持久性,我认为在记住检查时会发生这种情况,希望它有所帮助!

更新:

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