我有一个使用几个ASP.NET AJAX计时器控件(即轮询)的webforms应用。如果用户在其中一个页面上,则他们将永远不会超时,因为轮询过程会使他们的身份验证票保持有效。
我想对Timer控件进行细分,以便它们不会触发Forms Authentication的RenewTicketIfOld方法。我所经过的路径以及我之前做过的类似操作是将一些内容注入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的页面和减少会话的页面上运行时间,我的意思是根本不发送或获取Cookie的页面。我不知道在同一个域名页面下是否可行,我认为您需要一个不同的域名(outs)