asp.net会员LoginStatus控件需要代码吗?

时间:2012-05-01 07:35:17

标签: asp.net asp.net-membership session-hijacking loginstatus

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

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

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

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:2)

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

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