我在 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?我希望我清楚自己。