【发布时间】:2021-09-10 21:22:12
【问题描述】:
我一直在拼命地在网上搜索这个,但我认为我在理解将用户从 asp.net webforms 应用程序中注销的整个过程时遇到了问题。问题: 我能够登录到我的应用程序并且它使用 cookie,所以我在浏览器中设置了我的 cookie。 这是配置表单身份验证部分,
<forms loginUrl="login.aspx" timeout="15" protection="All" name="Domain.MYDOMAIN" path="/" domain="mysite.local" cookieless="UseDeviceProfile"/>
这里是前端控件
<li><asp:LoginStatus ID="LoginStatus1" runat="server" OnLoggedOut="OnLoggedOut" /></li>
在 OnLoggedOut 方法中,我们做这样的事情。
protected void OnLoggedOut(object sender, EventArgs e)
{
FormsAuthentication.SignOut();
/* Abandon session object to destroy all session variables */
HttpContext.Current.Session.Clear();
HttpContext.Current.Session.Abandon();
Response.Redirect("~/login.aspx");
}
这将从浏览器中清除 cookie。但是如果在我这样做之前我复制了 Domain.MYDOMAIN = "whatever it would be" 的 cookie 名称对值
并将其添加到邮递员电话中,它仍然显示我已登录!非常令人沮丧。 当我登录时
然后我将该 cookie 带到 Postman 并调用登录/默认页面,它显示我仍然登录!!!
我一直在阅读该 cookie 与“票证”相关,但我不确定如何在服务器端使该票证过期。一旦用户单击注销,我不希望再次使用此 cookie 值来访问页面,即应用程序中的任何页面。任何帮助,将不胜感激!谢谢!
旁注:我的会话状态设置为 InProc
<sessionState mode="InProc" />
【问题讨论】:
-
将您的 cookie 过期时间设置为 DateTime.Now.AddDays(-1d);
-
@EdneyHolder 和删除cookie一样——验证用户的cookie是存在的,如果添加过期,预览验证的cookie仍然存在,理论上可以被黑客拿走
-
我设置了过期的 cookie,但它似乎仍然没有帮助。我将采用 Aristos 的答案并进行仔细检查。感谢您的支持。
标签: c# asp.net authentication webforms session-cookies