2009-12-26 102 views
2

我拥有一个游戏网站。有时我需要暂停用户出于不同的原因。他们作弊,或者他们是不良用户的不良用户。暂停用户后,他们无法再登录我的网站,直到暂停期限到期。从管理会话中终止ASP .NET用户会话

但是,暂停用户后,他仍然可以访问该网站,可以与其他用户聊天,可以创建论坛帖子,可以做每一个,这是因为他仍然登录在网站上。我对此无能为力,大部分时间我需要重新启动IIS才能摆脱不良用户。

有什么我可以做我的ASP .NET会话杀死用户会话吗?我反对使用SQL来存储用户会话变量。

我更喜欢在每个用户请求上检查一个ASP .NET会话/应用程序变量,并且如果该变量包含暂停用户的ID,立即注销他。

回答

5

您无法以您想要的方式访问会话。你可以做的是在应用程序缓存中保存一个被暂停的用户列表。在每个页面请求和每次登录尝试中,都可以在列表上执行查找,以查看您的当前用户是否被暂停。如果他是,那么你可以将他注销并放弃他的会话,或者阻止新的登录。

+0

登录已被阻止。问题是在从管理面板暂停它们之后立即注销它们(如果它们已经登录)。 Cache的变量对我来说听起来很棒。这是因为缓存是线程安全的。 – 2009-12-26 15:33:06

+0

这是处理这个问题的正确方法。你必须检查每个帖子,看看他们是否仍然是一个有效的用户,如果没有......将他们踢出去。 – 2009-12-26 15:44:35