我的ASP.NET应用程序管理两个cookie:由FormsAuthentication发布和管理的标准auth cookie,以及另一个允许使用非Windows / ASP.NET系统进行单点登录的cookie。
ASP.NET应用程序配置为通过web.config启用auth cookie的滑动过期:
<authentication mode="Forms">
<!-- forms attributes removed for brevity -->
<forms name=".ASPXAUTH" slidingExpiration="true" />
</authentication>
不幸的是,滑动过期只会更改auth cookie,而不会更改SSO cookie。是否有我可以订阅的活动,以便在auth cookie的到期时间延长时通知我?
或者,我是否可以通过拦截对应用程序的每个有效请求并手动扩展cookie来模拟此行为?如果是这样,我必须实现哪种方法来拦截任何控制器的此类请求?
答案 0 :(得分:7)
如果发出请求且超过一半的超时间隔已经过去,则auth cookie滑动到期会重置过期时间。所以模仿这个功能。
当用户发出请求时,请检查超过一半的超时间隔是否已过去。如果有,则重置SSO cookie的到期时间。
这可能会变得棘手,因为you can't get the expiration value from a cookie。如果您的SSO cookie没有到期日期的密钥/值(而不是HttpCookie的Expires属性),那么您需要添加它。如果您无法更改该Cookie,只需更改其过期时间,那么可能只需设置第3个Cookie即可跟踪SSO Cookie何时过期。
答案 1 :(得分:2)
您可以在global.asax中实现Application_AuthenticateRequest
,以检查对应用程序发出的每个http请求的身份验证。