我在 Symfony 2.3 中使用“记住我”自动登录,非常标准的配置:
security:
firewalls:
secured_auth:
(...)
remember_me:
key: RememberMeKey
lifetime: 5184000
path: /
domain: ~
我正在使用 Redis 会话处理程序(本机 PHP Redis 会话模块)。
它按预期工作,这里没问题。长时间后第一次进入网站后,用户自动登录。
问题是我需要在我的控制器中使用会话 ID(实际上它被传递给视图,在视图中它被用作 AJAX 访问的外部服务的身份验证密钥)。要在我使用的控制器中获取会话 ID $this->get('session')->getId()
,通常它工作得很好,除了当用户第一次进入站点并且他使用记住我令牌自动登录时。对于这一请求,控制器中$this->get('session')->getId()
(或session_id()
)返回的会话 ID 是一个空字符串。重新加载页面后,一切正常。
现在想到的唯一想法是根本不在控制器中使用会话 ID,而是从 JavaScript 客户端的 cookie 中获取它,但这不是一个很好的解决方案。自动登录后如何在控制器中获取会话 ID?我希望我清楚自己。