1

我正在使用 loginStatus 控件让我的用户注销。我不再为注销过程编写代码(不删除会话、删除 cookie 或重定向用户),只依赖控件的内置代码。

现在我想知道在页面上放置一个 LoginStatus 控件并让它自己完成其余部分是否足够(我的意思是删除会话 cookie 并注销用户)或者我应该处理它的事件并编写代码来删除 cookie 和注销用户。

读过,即使在通过 LoginStatus 控件注销用户后,我们也应该删除会话 cookie 以避免其他人获取和使用它(劫持它)或在其内容中添加一些字符串(如 IP 或 ...)以避免劫持...是真的吗?

4

2 回答 2

3

尝试这样的事情:

FormsAuthentication.SignOut();
Session.Abandon();

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

接着

FormsAuthentication.RedirectToLoginPage();
于 2012-05-01T08:53:03.567 回答
2

LoginStatus控件仅注销您的 FormsAuth 票证,但并未明确放弃当前会话。需要注意的是,FormsAuth 票证(存储为 cookie)实际上决定了用户是否登录以及谁登录;ASP.NET 会话没有(除非您有自定义代码在表单身份验证状态之上另外检查 ASP.NET 会话)。

所以,如果你只需要签出票,你就可以走了。但是,如果您的应用程序将信息存储在 ASP.NET 会话中并且您也需要将其丢弃,那么您应该LoggedOut在页面的代码隐藏中为事件添加一个事件处理程序并调用 Session.Abandon(或任何您认为合适的方法)。

于 2012-05-01T08:50:16.867 回答