如何在用户登录但稍后从数据库中删除时清除会话

时间:2013-01-24 10:15:33

标签: c# asp.net-mvc session

当用户通过Web应用程序验证时,将存储会话中的令牌。 如果管理员在用户仍在线时删除后端用户。如何清除用户的会话?

4 个答案:

答案 0 :(得分:1)

简答:你不能轻易做到这一点。让会话过期,用户将无法随后登录。

答案很长:如果此功能对您非常重要,那么您必须检查每个请求的数据库,以确保用户自登录后尚未删除。虽然对数据库的调用可以是一个简单的布尔检查(即“用户仍然有效/有效”),但是在会话中失败了存储用户信息的目的。

我不能只删除用户的会话吗?即使您手头有会话ID,也无法找到/操作特定会话。密钥和存储由SessionStateStoreProviderBaseInProcSessionStateStoreOutOfProcSessionStateStoreSqlSessionStateStore)的实施内部管理,并非由开发人员操纵。

答案 1 :(得分:0)

在删除之前注销用户?

答案 2 :(得分:0)

基于会话Timeout和SlidingExpiration属性。 (感谢@chethan)。会话超时后,用户被迫再次登录 来自MSDN SlidingExpiration

  

滑动过期会重置有效的过期时间   如果发出请求,则认证cookie超过一半   超时间隔已过。如果cookie过期,则用户必须   重新认证。将SlidingExpiration属性设置为false可以   通过限制应用程序的时间来提高应用程序的安全性   根据配置的超时,身份验证cookie有效   值。

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

或者您可以使用AuthorizeAttribute.AuthorizeCore方法AuthorizeCore

Forms Authentication Guidelines

答案 3 :(得分:0)

您是否需要清除会话或阻止将来访问授权页面?

如果您对每个http服务器请求重新进行身份验证或检查授权,则该用户将被有效注销。