2013-01-24 39 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