当用户通过 Web 应用程序的身份验证时,会话中的令牌将被存储。如果管理员在用户仍然在线时删除了后端的用户。如何清除用户的会话?
4 回答
简短的回答:你不能轻易做到这一点。让会话过期,用户将无法随后登录。
长答案:如果这个功能对你来说真的很重要,那么你必须检查每个请求的数据库,以确保用户在登录后没有被删除。这有点违背了在会话中存储用户信息的目的,尽管对数据库的调用可以是一个简单的布尔检查(即“用户是否仍然有效/活跃”)。
我不能只删除用户的会话吗?即使您手头有会话 ID,似乎也无法定位/操作特定会话。密钥和存储由SessionStateStoreProviderBase
( InProcSessionStateStore
, OutOfProcSessionStateStore
, SqlSessionStateStore
) 的实现在内部管理,并且不打算由开发人员操作。
基于会话 Timeout 和 SlidingExpiration 属性。(感谢@chethan)。会话超时后,用户被迫从 MSDN SlidingExpiration再次登录
如果发出请求并且超过一半的超时间隔已经过去,则滑动到期会重置有效身份验证 cookie 的到期时间。如果 cookie 过期,用户必须重新认证。根据配置的超时值,将 SlidingExpiration 属性设置为 false 可以通过限制身份验证 cookie 的有效时间来提高应用程序的安全性。
system.web>
<sessionState timeout="x minutes"/>
...
</system.web>
否则你可以使用 AuthorizeAttribute.AuthorizeCore 方法AuthorizeCore
您是否需要清除会话或只是阻止将来访问授权页面?
如果您对每个 http 服务器请求重新进行身份验证或检查授权,那么用户将被有效地注销。
通过在删除之前注销用户?