session - 注销和登录时保留 session

标签 session yii

我打印出 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 unsetsession 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/

相关文章:

php - 将数据保存到数据库

java - 如何在 Spring MVC Web 应用程序中更新 session 属性

asp.net-mvc - 如何在 SQL Server 中为 Asp.Net MVC 4 应用程序或 WebRole 应用程序存储 asp.net session 状态?

javascript - 如何使用 javascript 启用和禁用按钮?

php - Yii模型关系加入

php - Yii 框架 :Form builder

php - 我想知道为什么我的登录在 000Webhost 上有效,但在我的系统上尝试时却不起作用

java - 如何在 Jersey RESTful web 服务中放置 cookie?

php - Yii 交易和验证问题

yii-user 扩展 - 如何添加复选框配置文件字段?