yii2 session 存储在数据库中,如何强制退出某个用户?

我这样尝试了

  1. 手动删除 session 表中用户 A 的记录
  2. 刷新用户 A 的用户中心,依然还处于登录状态
  3. 查看 session 表,用户 A 的记录又出现了

那怎么才能强制让用户 A 退出,A 可能在多处的网页登录。

阅读 2.7k
2 个回答

因为Cookie带了相关信息,应用认了Cookie信息,通过session驱动到表里。

既然你还不清楚怎么退出,我猜Yii这个框架的用户鉴权方式默认是自带的。

一般框架自带的鉴权方式默认都实现了开箱即用的 退出当前设备 退出所有设备 仅退出其它设备 等session注销方式。
这些代码虽然都集成到框架内部了,但由于是业务代码,所以一般都很简单,只是框架给它封装的看起来优雅一点,考虑的多一点而已。其本质上还是cookie、session那一套删来删去,建议可以看看它内部代码具体是如何写的。

根据搜索到的信息

1 在用户字段上增加一个 force_logout 标记
2 在 beforeAction 里判断 force_logout 标记,如果有就 logout,重置 force_logout 标记,然后跳转
3 强制登出的地方 设置这个 force_logout 标记

宣传栏