【发布时间】:2015-11-04 01:16:29
【问题描述】:
我想注销在与同一用户的当前会话不同的浏览器/环境中登录的用户会话。与此类似的功能 - https://www.facebook.com/settings?tab=security§ion=sessions&view。
Yii2 是使用的后端框架。使用 redis 进行会话管理 - yii2-redis。我还保存了保存在数据库中的会话 ID。
但是没有成功。
session_id($old_session_id);
session_start(); // This line throws error.
session_destroy();
使用\Yii::$app->session->destroySession($oldSessionId)删除redis中的key并没有注销。
将会话 id 更改为旧的,然后销毁会话也不起作用。
$currentSessionId = \Yii::$app->session->getId();
\Yii::$app->session->setId($oldSessionId);
\Yii::$app->getSession()->destroy();
\Yii::$app->session->setId($currentSessionId);
如果有人成功实现了这一点,请分享您的解决方案。另外,如果有任何相关的文档可以提供帮助,请提供。
【问题讨论】:
-
感谢@Ngô Văn Thao 和@Nate 的回答。这是我从他们的答案中获取输入的方法。将
enableAutoLogin设置为 false。创建一个sessiontable(user_id, session_id) 以及与设备、浏览器相关的其他属性。在afterLogin方法中,将user_id和session_id添加到session表中。要远程注销会话,请使用 -Yii::$app->session->destroySession(sessionId) 销毁会话并更改用户的 auth_key。注意:这不适用于默认的 Session 组件。与yii\redis\Session一起工作正常
标签: php session redis yii2 logout