【问题标题】:Symfony 3.4.20 and FOSUserBundle - 'remember me' not workingSymfony 3.4.20 和 FOSUserBundle - “记住我”不起作用
【发布时间】:2019-09-07 04:10:11
【问题描述】:

security.yml中进行如下相关配置:

security:
    firewalls:
        # disables authentication for assets and the profiler, adapt it according to your needs
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        main:
            pattern:
            form_login:
                provider: fos_userbundle
                csrf_token_generator: security.csrf.token_manager

            logout:       true
            anonymous:    true
            logout_on_user_change: true
            remember_me:
                secret: '%secret%'
                secure: true
                httponly: true
                lifetime: 31536000

记住我会话令牌仅持续浏览器会话,而不是配置中指定的年份。这可能是由于secure: true 设置造成的吗?我的开发机器没有安装任何 TLS,那可能是罪魁祸首吗?还是我应该寻找其他东西?从the documentation 看来,我的设置似乎正确,所以我有点茫然。

【问题讨论】:

  • 我遇到了同样的问题,我的问题是我的用户实体序列化程序缺少盐,因此它可以正确登录,但是一旦你回来它就不会反序列化我的令牌
  • 话虽如此,我还是建议不要使用 FOSUB
  • 我在这个项目中无法从 FOSUB 切换到别的东西。你能写出你的解决方案作为答案吗?也许我可以把一些东西粘在一起

标签: php symfony remember-me


【解决方案1】:

事实证明,我对 secure: true 的直觉是正确的。我在测试期间将其设置为false,cookie 是正确的。由于我的开发机器没有 SSL/TLS,如果这是配置的,它就无法发送安全 cookie。它应该可以在我的生产服务器上运行,因为我确实在那个环境中使用了 SSL/TLS。

【讨论】:

    【解决方案2】:

    虽然已经晚了,但这可能会对某人有所帮助。
    form_login: 下添加require_previous_session: false 选项解决了我的问题。
    就这样
    form_login:
    require_previous_session: false
    https://symfony.com/doc/3.1/reference/configuration/security.html
    默认情况下,在提交身份验证请求之前必须存在会话。所以,如果你想实现记住我的功能,你需要将require_previous_session设置为false

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 2012-01-28
      • 1970-01-01
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      相关资源
      最近更新 更多