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

Ste*_*idi 2 c# asp.net cookies asp.net-mvc 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>
Run Code Online (Sandbox Code Playgroud)

不幸的是,滑动过期只会更改auth cookie而不是SSO cookie.是否有我可以订阅的事件,以便在auth cookie的到期时间延长时通知我?

或者,我是否可以通过拦截对应用程序的每个有效请求并手动扩展cookie来模拟此行为?如果是这样,我必须实施哪种方法来拦截任何控制器的此类请求?

Mik*_*Dev 7

如果发出请求并且超过一半的超时间隔已经过去,则auth cookie滑动到期将重置过期时间.所以模仿这个功能.

当用户发出请求时,请检查超过一半的超时间隔是否已过去.如果有,则重置SSO cookie的到期时间.

这可能会变得棘手,因为您无法从cookie中获取到期值.如果您的SSO cookie没有到期日期的密钥/值(不是HttpCookie的Expires属性),那么您需要添加它.如果您无法更改该Cookie,只需更改其过期时间,那么可能只需设置第3个Cookie即可跟踪SSO Cookie何时过期.