Session 管理员销毁登录用户会话的简单方法

Session 管理员销毁登录用户会话的简单方法,session,Session,我需要能够删除一个用户的会话,迫使他再次登录 例如,我想从我的站点中删除并禁止该用户,但即使我从DB中删除他的数据,他的会话仍将处于活动状态,因此他可以继续在站点上处于活动状态,直到他注销并尝试再次登录 如何查找和删除当前登录用户的会话 会话存储在文件系统中,我希望保持这种状态。这取决于您的会话管理系统。不同的服务器以不同的方式管理会话 个人和一般地,而不是试图删除用户,我会考虑添加一个数据库列,允许我将用户标记为禁用。 然后检查页面访问,如果设置了禁止错误,则抛出禁止错误 显然,这会增加数据库

我需要能够删除一个用户的会话,迫使他再次登录

例如,我想从我的站点中删除并禁止该用户,但即使我从DB中删除他的数据,他的会话仍将处于活动状态,因此他可以继续在站点上处于活动状态,直到他注销并尝试再次登录

如何查找和删除当前登录用户的会话


会话存储在文件系统中,我希望保持这种状态。

这取决于您的会话管理系统。不同的服务器以不同的方式管理会话

个人和一般地,而不是试图删除用户,我会考虑添加一个数据库列,允许我将用户标记为禁用。 然后检查页面访问,如果设置了禁止错误,则抛出禁止错误


显然,这会增加数据库的负载,因此它可能不是您的最佳方法。

会话中的变量在每个页面上都会被检查,这又如何呢?您没有指定任何语言,但在其中一些语言上,您可以执行以下操作:


Session["username"] = <userid>;

Session["username"] = null;
然后,当您确定该用户不再属于您的信任范围时,您可能会遇到如下情况:


Session["username"] = <userid>;

Session["username"] = null;

这将导致用户被重定向到登录页面,并且由于您已经更改了数据库,他/她将无法再登录。请注意,您没有破坏会话本身,只是破坏了用户登录的部分。

我不确定是否理解您的问题。在登录后,您是否希望在会话的中间禁止用户?如果是这样,您不应该只是从数据库中删除,还应该从内存中删除会话信息&强制用户重新登录。
正如David指出的,如果您想一直这样做,您可能需要在db中保留一个被禁止用户的列表。但是,我不知道为什么会有人这样做,因为首先不让用户登录要容易得多。

如果您使用cookie跟踪会话ID,请删除cookie,因为在这之后,用户将显示为新的匿名用户,并且必须再次登录。这假设存在某种清理磁盘上会话数据的过程。

您有能力在服务器上安装其他软件吗?你能设置memcached吗


如果是这样,您可以简单地将db表中被禁止的用户列表存储在memcached中。当管理员禁止用户时,它会更新db表和缓存列表。从这里开始,web应用程序只需检查每个页面请求上的缓存,这样可以避免命中数据库。

如果要立即结束会话,每个页面都应检查每个请求上的会话数据


禁止用户使用;存储在登录时检查的用户状态

我希望避免每两个月发生一次的事件连续访问数据库。顺便说一句,这是开着的灯。灯里的P可以代表许多不同的东西——其中一个是Perl,Perl本身就有多个会话管理模块。想象一下,一个用户不断滥用系统,例如发布成熟的内容,所以我想禁止他。他是在线的,所以我必须将他设置为被禁止的,并以某种方式将他注销。删除会话似乎是迫使他注销的最有效的方法。如何使用php删除用户会话信息,会话存储在文件系统中,了解原因。谢谢正如我提到的,您应该从内存中删除会话信息,在db中将用户标记为禁止,然后强制用户登录页面。然而,他可能会再次注册&再次启动整个过程-抱歉,我不知道如何在PHPCan中执行此操作。我们是否可以搜索该会话并从服务器中实际删除该会话文件?不知道PHP会话如何工作,但对我来说这似乎是不可能的。允许一个用户为另一个用户破坏会话将是一个相当大的安全漏洞,即使其目的纯粹是有益的。根据这一点,您可以强制php将会话数据存储在特定位置,但您仍然需要识别哪些会话文件属于您试图禁止的用户。