我打印出 session ID,如下所示:
<?php print YII::app()->session->sessionID; ?>
当我登录
并检查我的ID
时,它类似于:huh09vuo33scdlkmfuc8651t12
,例如。如果我注销并再次查看,我的 ID 仍然相同。但是,如果我再次登录, session ID 就会发生变化!
我的问题是我的 session 中有一些信息需要存储在 cookie 中并在登录后重新加载。如果登录用户的 session ID 发生变化,我如何才能唯一地确定该用户是正确的用户?
最佳答案
组件 Yii::app()->user
是一个 CWebUser
实例,并且 CWebUser::logout(boolean $destroySession=true)
文档说明:
$destroySession (boolean) whether to destroy the whole session. Defaults to true. If false, then clearStates will be called, which removes only the data stored via setState.
实际上,Yii::app()->user->logout(true)
破坏了 session ,意味着所有 session 信息无法恢复,并且使用 PHP 的 session unset
和 session destroy
分别清除所有 session 信息并销毁服务器上的 session ID信息。但是 Yii::app()->user->logout(false)
不会破坏原始 session 信息或取消设置 session ID,它只会清除 session 状态,这是 Yii 实际使用的信息。您可以将其归类为“软注销”,因为原始 session 信息与 session 保持关联,并且只有状态与 session ID 解除关联,但 session ID 保持不变。 .
关于session - 注销和登录时保留 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15480229/