2

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

4

4 回答 4

1

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

长答案:如果这个功能对你来说真的很重要,那么你必须检查每个请求的数据库,以确保用户在登录后没有被删除。这有点违背了在会话中存储用户信息的目的,尽管对数据库的调用可以是一个简单的布尔检查(即“用户是否仍然有效/活跃”)。

我不能只删除用户的会话吗?即使您手头有会话 ID,似乎也无法定位/操作特定会话。密钥和存储由SessionStateStoreProviderBase( InProcSessionStateStore, OutOfProcSessionStateStore, SqlSessionStateStore) 的实现在内部管理,并且不打算由开发人员操作。

于 2013-01-24T10:39:40.147 回答
0

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

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

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

否则你可以使用 AuthorizeAttribute.AuthorizeCore 方法AuthorizeCore

表单身份验证指南

于 2013-01-24T10:17:56.457 回答
0

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

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

于 2013-01-24T10:28:02.827 回答
0

通过在删除之前注销用户?

于 2013-01-24T10:16:09.357 回答