2014-09-23 51 views
2

我的ASP.NET應用程序管理兩個cookie:由FormsAuthentication發佈和管理的標準auth cookie,以及使用非Windows/ASP.NET系統啓用單點登錄的另一個cookie。如何爲不受ASP.NET管理的cookie設置滑動過期時間?

的ASP.NET應用程序被配置爲經由web.config中以啓用在auth餅乾一個滑動過期:

<authentication mode="Forms"> 
    <!-- forms attributes removed for brevity --> 
    <forms name=".ASPXAUTH" slidingExpiration="true" /> 
</authentication> 

不幸的是,滑動過期僅改變AUTH的cookie,而不是SSO的cookie。是否有我可以訂閱的事件,以便在授權cookie的過期時間延長時通知我?

另外,我是否也可以通過截取每個有效請求到應用程序並手動擴展cookie來模擬此行爲?如果是這樣,我必須實現哪種方法來攔截對任何控制器的請求?

回答

6

如果發出請求並超過超過一半的超時時間間隔,auth cookie的過期將重置到期時間。所以模仿這個功能。

當用戶提出請求時,檢查是否超過超過一半的超時間隔已過。如果有,則重置SSO cookie的到期時間。

這可能會變得棘手,因爲you can't get the expiration value from a cookie。如果您的SSO Cookie沒有過期日期的密鑰/值(不是HttpCookie的Expires屬性),那麼您需要添加它。如果您無法在超時更改cookie時更改該cookie,那麼可能只需設置第三個cookie以跟蹤SSO cookie何時到期。

2

您可以在global.asax中實現Application_AuthenticateRequest以檢查對應用程序發出的每個http請求的身份驗證。