用Yii做了个站,想实现超级管理员可以踢出已经登录的用户的功能(已解决)

就是,超级管理员在后台界面,可以得到已经登录的用户名称,

然后可以随时踢出已经登录的用户,

假设踢出A用户,

这样当A用户再刷新页面时,就会跳转到登录页面,

请教大家这种功能,怎么实现那??

原理怎么弄那?

想办法把 该用户关联的session清除掉(这种方法 要求你自己实现了session存储方案—比如数据表管理 然后多一个user_id 字段来关联session跟用户 参考: CDbHttpSession)当管理员要提出那个用户时只需要 清除掉他对应的session即可

或者用其他办法实现 思路比较多:

比如 每个用户在登陆后 置数据库表的某个字段 每次访问都检查该字段 如果与预期不符那么登出当前用户 这样后台管理员就可以置这个字段(比如 is_kicked = 0|1 )至于在那里做方法很多以致于我想不出用哪一个了(

在基控制器中做 在过滤器中做 或者监听应用程序的beginRequest而用behavior做 或者在beforeControllerAction中做 又或者用一个preload预加载组件在init方法中做

我个人比较倾向于隔离性强的方法:behaviorbehaviors可以在attach方法中做 或者 事件监听onBeginRequest

谢谢仁兄,

目前我正考虑用你说的CDbHttpSession+表的方式来做,

思路有了