asp.net-mvc – 注销asp.net mvc后,User.Identity.IsAuthenticat
发布时间:2020-12-16 06:24:48 所属栏目:asp.Net 来源:网络整理
导读:我有一个函数有一个循环,在每个循环结束时休眠6秒 Thread.sleep代码(TimeSpan.FromSeconds(6)); 这循环10次,即该功能运行60秒,每次暂停6秒. 我在循环开始时进行了身份验证测试 if (!HttpContext.Current.User.Identity.IsAuthenticated) { return null; } 所
我有一个函数有一个循环,在每个循环结束时休眠6秒
Thread.sleep代码(TimeSpan.FromSeconds(6)); 我在循环开始时进行了身份验证测试 if (!HttpContext.Current.User.Identity.IsAuthenticated) { return null; } 所以每次它第一次认证然后运行并等待6秒. 这是我的功能: while (counter < 10) { if (!HttpContext.Current.User.Identity.IsAuthenticated) { return null; } // doing stuff Thread.Sleep(TimeSpan.FromSeconds(6)); counter++; } 现在用户同时注销(比如在第15秒).我使用ajax注销,因此不想重定向我的页面.即使在注销后,IsAuthenticated对于所有10个循环始终为true,并且仅在重新执行此函数时才为false 注销我使用: FormsAuthentication.SignOut(); Session.Abandon(); Response.Cookies.Remove(FormsAuthentication.FormsCookieName); Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1)); HttpCookie cookie = HttpContext.Request.Cookies[FormsAuthentication.FormsCookieName]; if (cookie != null) { cookie.Expires = DateTime.Now.AddDays(-1); Response.Cookies.Add(cookie); } 但仍然是真的…… 解决方法
发生这种情况是因为IsAuthenticated具有内部缓存,因为一次又一次地进行此身份验证的时间过于昂贵.所以在你的循环中,离开页面时,IsAuthenticated并没有改变.
另一方面,这是什么意思?在一个循环中用户可以看到前4个认为,然后看不到剩下的因为没有更多的认证?没意义. 如果你想检查用户是否离开并离开页面,你可以做的是检查一些其他参数. 这是显示此内部缓存的代码. public virtual bool IsAuthenticated { get { if (this.m_isAuthenticated == -1) { WindowsPrincipal principal = new WindowsPrincipal(this); SecurityIdentifier sid = new SecurityIdentifier(IdentifierAuthority.NTAuthority,new int[] { 11 }); this.m_isAuthenticated = principal.IsInRole(sid) ? 1 : 0; } return (this.m_isAuthenticated == 1); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET 使用AJAX
- asp.net-mvc – 在Tag Helper上拥有ViewContext属性的目的是
- 在ASP.NET WebForms中使用jQuery调用’WebMethod’
- asp.net-mvc – ASP.Net MVC添加控制器错误
- asp.net – 我可以使用构造函数动态创建用户控件吗?
- 为什么ASP.Net重写runat = server锚控件的相对路径?
- ASP.Net Web应用程序尝试使用Impersonation和Delegation连接
- asp.net – IIS Express全能子域名网址
- asp.net-mvc-3 – VSTS错误SerializationException
- 如何在ASP.NET中使用log4net在日志文件中包含SessionID?
推荐文章
站长推荐
- asp.net – 如何将最新的TFS变更集编号插入到asp
- asp.net-mvc – ASP.net MVC 3教程推荐
- IIS 7中为ASP.NET缺少MIME类型404.17
- 有没有办法检查WebResponse而不影响.NET中的底层
- asp.net-core – .NET Core 1.0 – 如何使用xUni
- asp.net-mvc – 如何在ASP.NET MVC API控制器中获
- asp.net-web-api2 – 什么导致swagger已经出现在
- 多个控制器,一个视图和一个模型ASP.NET MVC 3
- ASP.NET System.Data.EntityClient连接字符串帮助
- 为什么每个人都在ASP.NET Webforms中依赖注入是困
热点阅读