Redis PHP 会话不持久

Posted

技术标签:

【中文标题】Redis PHP 会话不持久【英文标题】:Redis PHP Sessions do not persist 【发布时间】:2013-04-23 15:19:02 【问题描述】:

我正在使用这个包来替换 cookie 会话,以便我的 facebook 应用程序仍然可以工作。

https://github.com/nicolasff/phpredis

我不需要为会话使用 cookie,但即使使用 redis 解决方案,它也只会在启用 cookie 的情况下持续存在。

有没有办法在没有 cookie 的情况下持久化 redis 存储?

谢谢!

【问题讨论】:

【参考方案1】:

大多数会话解决方案都需要 Cookie,因为浏览器必须向服务器发送一个唯一标识符来指示用户是谁。代替 cookie,每当用户单击链接/提交表单等时,您都必须将 URL 上的会话标识符作为查询字符串参数传递。

【讨论】:

【参考方案2】:

我最终赶上了 session_id(),通过 javascript 发送它。使用

$.ajaxSetup( data: sessionId );

让每个 ajax 调用都发送 sessionID

然后,使用

if(isset($_REQUEST['sessionId'])) session_id($_REQUEST['sessionId']));

设置会话。现在避免使用 Cookie。

【讨论】:

以上是关于Redis PHP 会话不持久的主要内容,如果未能解决你的问题,请参考以下文章

redis 与本机会话

使用 Redis 存储会话有多安全?

会话缓存(Session Cache)?

为啥不使用长寿命会话 ID 来代替带有令牌的持久 cookie?

使用docker-compose为php设置redis会话处理程序

如何在 PHP + MySQL 中正确实现自定义会话持久化器?