2013-01-24 78 views
2

當用戶通過Web應用程序的身份驗證時,會話中的令牌將被存儲。 如果管理員在用戶仍在線時刪除後端的用戶。如何清除用戶的會話?如何在用戶登錄後清除會話但稍後從數據庫中刪除會話

+1

'Session.Abandon'? – Oded

+0

管理員如何在後端刪除用戶?直接在數據庫中? –

+0

您需要檢查數據庫以查看服務器上是否存在用戶帳戶。 – Kane

回答

1

簡短回答:你不能輕易做到這一點。讓會話過期,用戶將無法登錄。

長答案:如果這個功能對你來說真的很重要,那麼你將不得不每次檢查數據庫以確保用戶登錄後沒有被刪除。在會話中存儲用戶信息,儘管對數據庫的調用可以是簡單的布爾檢查(即「用戶仍然有效/有效」)。

我不能刪除用戶的會話嗎?即使您擁有會話ID,也無法定位/操作特定會話。密鑰和存儲在內部由SessionStateStoreProviderBaseInProcSessionStateStore,OutOfProcSessionStateStore,SqlSessionStateStore)的實現進行管理,並且不打算由開發人員操縱。

0

基於會話超時和SlidingExpiration屬性。 (感謝@tttthan)。會話超時後,用戶被迫從MSDN SlidingExpiration

一個有效的 身份驗證cookie,如果一個請求,而且一半以上的 超時間隔的已過滑動到期重置到期時間再次 登錄。如果cookie過期,則用戶必須重新驗證 。根據配置的超時值 值,通過將 認證cookie有效的時間限制爲 ,可以將SlidingExpiration屬性設置爲false,從而提高應用程序的安全性。

system.web> 
    <sessionState timeout="x minutes"/> 
    ... 
</system.web> 

否則,你可以使用AuthorizeAttribute.AuthorizeCore方法AuthorizeCore

Forms Authentication Guidelines

+0

如果用戶處於活動狀態(滑動過期設置爲true),則會話不會過期。 – Chethan

+0

@Chethan謝謝。更新它 –

0

你需要清除會話或只是防止未來授權頁面訪問?

如果您重新驗證或檢查每個http服務器請求的授權,那麼用戶將被有效註銷。

+0

我只需要清除用戶的會話。任何方式,因爲我檢查每個請求上會話令牌的存在,一旦會話被清除,用戶將被重定向到登錄頁面。 – Chethan