如何为不受ASP.NET管理的cookie设置滑动到期时间?

时间:2014-09-23 21:37:34

标签: c# asp.net asp.net-mvc cookies forms-authentication

我的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来模拟此行为?如果是这样,我必须实现哪种方法来拦截任何控制器的此类请求?

2 个答案:

答案 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请求的身份验证。