我有一个 Web 表单应用程序,它使用一些 ASP.NET AJAX 计时器控件(即轮询)。如果用户位于具有其中之一的页面上,他们实际上永远不会超时,因为轮询过程使他们的身份验证票证保持事件状态。
我想对 Timer 控件进行分段,以便它们不会触发 Forms Authentication 的 RenewTicketIfOld 方法。我所采用的路径和我之前做过的类似操作是将某些内容注入(inject)到 AJAX HTTP 请求中,以将这些请求识别为来自计时器,然后在隐藏身份验证 cookie 的表单例份验证模块之后运行一些代码以免在响应中发回。
关于如何防止 Timer 控件保持表单例份验证票证事件的任何其他建议?
最佳答案
我的第一个技巧。
在网络配置中,设置域名,例如 www.yoursite.com
<forms domain="www.yoursite.com" .... >
并创建一个子域,例如timers.yoursite.com
,它实际上与www.yoursite.com相同。 现在在 times.yoursite.com 上调用电话,并且由于 Cookie 必须找到 www.yoursite.com
,因此它们永远不会触发身份验证。
第二个肮脏伎俩
在网络配置中设置 requireSSL=true
<forms requireSSL="true"
并在非安全页面上进行计时器调用。这样,身份验证就不会再次触发,因为现在在非安全页面上不会读取 cookie。
最后的想法是,在无 cookie 页面和无 session 页面上运行时间,我的意思是根本不发送或获取 cookie 的页面。我不知道这在同一个域名页面下是否可行,我认为你需要一个不同的域名(out)
关于asp.net - 阻止 AJAX 计时器控制请求扩展 FormsAuthentication 票证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6589755/