【问题标题】:Symfony 2 "Your session has timed out or you have disabled cookies"Symfony 2“您的会话已超时或您已禁用 cookie”
【发布时间】:2020-03-24 18:00:43
【问题描述】:

导致此问题的三件事之一,我不确定是三件事中的哪一个。所以我会提到所有 3 个,希望它可以帮助其他人节省时间。

最初我在 parameters.yml 中更改了数据库用户凭据 这不起作用,因为有问题的用户无法从 localhost 登录。也就是说,我使用该站点来测试连接,这可能会破坏 cookie。

由于缺少图像,我遇到了一些缓存文件夹权限问题。所以我不得不像你每次一样清除缓存并调整一些权限。

最后,我更改了 security.yml 的路径

        form_login:
            login_path:  /login
            check_path:  /login_check
        logout:
            path:   /logout

到:

        form_login:
            login_path:  /account/login
            check_path:  /account/login_check
        logout:
            path:   /account/logout

以及routing.yml中的适当更改

结果是我已经登录的用户不再通过安全凭证,如果我尝试通过不同的用户/浏览器登录,我总是面临: "您的会话已超时或您已禁用 cookie"

花费大量时间关注红鲱鱼、检查安全性、登录处理、redis 等。

在下面回答。

【问题讨论】:

    标签: symfony session cookies login


    【解决方案1】:

    我最终在这里找到了答案: Symfony authentication - can't get past login page in production(pleerock的回答)

    但想将我主题行中的错误消息与下面的解决方案联系起来:

    security:
        firewalls:
            main:
                form_login:
                    require_previous_session: false
    

    这解决了问题之前未登录的浏览器的问题。

    对于我已经登录的浏览器,我必须手动删除会话 cookie 才能让事情再次正常运行。

    【讨论】:

      【解决方案2】:

      我认为阿迪的答案不是解决方案,只是变通。

      我确实意识到了

      config.yml中有cookie_domain参数;

      session:
          save_path: ~
          cookie_domain: %cookie_domain%
      

      如果您使用像 test.myapp 这样的自定义域,您应该在此处进行相同的设置。当这两者不匹配时,就会出现此问题。

      它应该如下所示;

      cookie_domain: 'test.myapp' 你的实际域名:test.myapp

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-31
        • 2018-10-06
        • 2020-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-10
        • 2011-02-11
        相关资源
        最近更新 更多