我正在尝试使用 forms.signout 但有时它不会注销用户,他仍然可以浏览网站。

我该如何解决这个问题?我还配置了 web.config 表单身份验证,但它仍然无法正常工作。

我正在使用 FormsAuthentication 来验证用户的登录信息。

谢谢!!

有帮助吗?

解决方案

我不知道原因是什么,但您可以考虑/尝试一些事情

  • 他们实际上仍然能够访问服务器生成的页面还是只是返回到本地缓存的版本?当他们引发回发并使用代码来检查他们是否经过身份验证时,会发生什么情况?我认为后者意味着它们已注销,但正在查看登录页面的缓存版本,在这种情况下,您希望指示客户端不要缓存页面,例如:

    Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));Response.Cache.SetCacheability(HttpCacheability.NoCache);Response.Cache.SetNoStore();

  • 您可以尝试手动将 cookie 设置为过期,但这是一种 hack

    FormsAuthentication.SignOut();Context.Response.Cookies.Item(FormsAuthentication.FormsCookieName).Expires = Date.Now;Response.Redirect("~/Somewhere.aspx");

其他提示

用户是否在其受信任的站点或Intranet站点中拥有域(或父域)?我最近遇到了一些用户经过身份验证的问题,但在这种情况下是匿名的。在我的情况下,也可能是父网站一次被配置为允许Windows集成身份验证。我删除后删除了,但它似乎没有帮助问题。我还没有重新启动IIS,看看这是否会产生影响。我已经检查了用户是否经过身份验证和非匿名,以确保呈现视图的正确部分。这实际上更准确,即使我的登录代码应该阻止匿名登录。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top