在Laravel 5.2中消除服务器上的重复会话

在Laravel 5.2中消除服务器上的重复会话,laravel,session,laravel-5,laravel-artisan,laravel-5.2,Laravel,Session,Laravel 5,Laravel Artisan,Laravel 5.2,是关于什么的? 数据库会话驱动程序现在包括用户id和ip地址,因此您可以轻松清除给定用户的所有会话 有什么问题 是否有任何博客清楚地解释了如何注销使用多个IP地址或使用多个浏览器通过同一IP地址创建的重复会话?据我所知,这并不困难 此表中的示例数据如下所示: 这里有用户id、浏览器和最后一个活动时间戳。因此,如果需要,现在可以添加到cron,例如运行以下查询: select user_id, count(*) AS `total` FROM sessions GROUP by user_id

是关于什么的?

数据库会话驱动程序现在包括用户id和ip地址,因此您可以轻松清除给定用户的所有会话

有什么问题


是否有任何博客清楚地解释了如何注销使用多个IP地址或使用多个浏览器通过同一IP地址创建的重复会话?

据我所知,这并不困难

此表中的示例数据如下所示:

这里有
用户id
、浏览器和最后一个活动时间戳。因此,如果需要,现在可以添加到cron,例如运行以下查询:

select user_id, count(*) AS `total` FROM sessions GROUP by user_id HAVING count(*) > 1
这将为您的用户提供多个会话,您将能够决定如何处理这些会话。例如,您可以删除这些用户的所有会话,或者只保留最后一个会话,然后删除所有其他会话。当然,这取决于你

当您从数据库中删除记录时,用户需要再次登录,例如,如果我删除了Firefox会话,我需要再次登录Firefox才能登录我的帐户

编辑

请注意,默认情况下没有
会话
表(因为许多用户不会为会话使用
数据库
驱动程序)。要创建此表,您需要运行:

 php artisan session:table
上面的命令将创建会话迁移

然后你需要跑

 php artisan migrate

要将此迁移应用到数据库

@Helper,您可能不应该在
用户
表中,它将是
用户id
,这里是
用户id
,我假设您设置了
.env
文件
会话驱动程序=数据库
(默认情况下它是
会话驱动程序=文件
)如果我必须删除那些不属于当前登录用户的记录,那么我将如何识别这些记录?我的意思是,假设出现了2次用户id,那么我如何知道我必须删除哪一个。我问这个问题的原因是因为有可能有人试图通过web报废代码使用相同的帐户登录…所以同一个用户可能有许多记录。正如我所说,在运行我显示的查询时,对于结果集,您可以做任何您想做的事情-此查询将获得所有用户的记录(而不是当前的,因为在cron中不会有任何已登录的用户)我可以避免在会话表中创建重复的用户会话记录吗?会话配置文件中是否有这样做的标志?