Php Symfony 4记住我不';当浏览器重新启动时,cookie将被破坏

Php Symfony 4记住我不';当浏览器重新启动时,cookie将被破坏,php,authentication,cookies,fosuserbundle,symfony4,Php,Authentication,Cookies,Fosuserbundle,Symfony4,我有一个非常类似的问题: 不幸的是,他们的解决方案无法在Symfony 4中修复它 用户登录后,将创建cookie“REMEMBERME”。如果我重新启动浏览器,我仍然可以看到我的cookie,但是当我访问安全下的页面时,它不起作用,我被重定向到登录页面,cookie随后被销毁,用户必须再次登录 我一直在开发官方文档中解释的身份验证过程(实际上,这本书没有特别的定制,没有FOSUSERBUNDLE) 你可以找到我的服务。yaml像 我的登录功能如下所示 在我的路线中,我试图用是否经过身份验证替换

我有一个非常类似的问题:

不幸的是,他们的解决方案无法在Symfony 4中修复它

用户登录后,将创建cookie“REMEMBERME”。如果我重新启动浏览器,我仍然可以看到我的cookie,但是当我访问安全
下的页面时,它不起作用,我被重定向到登录页面,cookie随后被销毁,用户必须再次登录

我一直在开发官方文档中解释的身份验证过程(实际上,这本书没有特别的定制,没有FOSUSERBUNDLE)

你可以找到我的服务。yaml像

我的登录功能如下所示

在我的路线中,我试图用
是否经过身份验证
替换
角色用户
(我不知道到底有什么区别),但没有任何改变。cookie在这里,但它仍然不能帮助我保持登录状态


非常感谢您的帮助。我很想在我的应用程序上使用“记住我”功能。非常感谢。

如果cookie可用,但您未成功通过身份验证,请检查您的身份验证测试(!)是否正常

IS_AUTHENTICATED_membered将为true,但IS_AUTHENTICATED_FULLY将为false,因为第二个选项排除了通过Rememberd me cookie身份验证的用户

(再次阅读并更改身份验证检查器代码)

还要检查其他事项:

  • 你做了/强迫了吗
  • 登录表单包含crfs令牌和“记住我”复选框
  • 同时选中所有其他选项(更改默认值)
  • 上次使用的用户名是否已成功填写在登录表单中

为什么您的
安全区域
防火墙没有模式?甚至需要它吗?:)谢谢你的评论@nifr,但你不需要它。我听不懂。您的
secured_区域
防火墙不受您提供的配置中的主机、模式或方法的限制。因此,基本上这两个防火墙都匹配每个url,因此根本不使用
secured_区域
防火墙,因为只有一个防火墙是主动应用的,这是第一个匹配的防火墙。因此,您提供的
secured\u area
防火墙配置不完整、配置错误或不必要。你明白我的意思吗?对不起,我不太明白。你认为防火墙是cookie的问题吗?因为在其他情况下,它工作得很好。您确认浏览器设置不是cookie丢失的原因吗?谢谢您,当转到
角色:是否经过身份验证\u记住
下的页面时,它不工作。我不知道为什么。浏览器中有cookie,但不幸的是,什么也没有发生。然后,根据配置,我被重定向到登录,然后删除cookie。回答您的问题:我不要求
是否经过完全验证,因此没有重新验证。此外,登录表单中有“是”叉号,此处有“记住我”复选框,默认情况下已选中。我检查了所有其他参数,我觉得很好。我认为上次使用的用户名没有成功填写在登录表单tho中,我不知道你检查我的身份验证测试是什么意思?谢谢
security:
encoders:
    App\Entity\User:
        algorithm: bcrypt
# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
providers:
    in_memory: { memory: ~ }
    our_db_provider:
        entity:
            class: App\Entity\User
            property: email
firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        pattern:    ^/
        http_basic: ~
        provider: our_db_provider
        anonymous: ~
        form_login:
            login_path: login
            check_path: login
            default_target_path: dashboard
        remember_me:
            secret:   '%kernel.secret%'
            lifetime: 604800 # 1 week in seconds
            path:     /
            secure:   true
            name:     REMEMBERME
            remember_me_parameter: _remember_me
        logout:
            path:  /logout
            target: /
    secured_area:
        form_login:
            csrf_token_generator: security.csrf.token_manager
            provider: our_db_provider
        logout:
            path:   /logout
            target: /

role_hierarchy:
        ROLE_ADMIN:      ROLE_USER
access_control:
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/profile, roles: IS_AUTHENTICATED_REMEMBERED }
public function login(Request $request, AuthenticationUtils $authenticationUtils)
{
    // get the login error if there is one
    $error = $authenticationUtils->getLastAuthenticationError();

    // last username entered by the user
    $lastEmail = $authenticationUtils->getLastUsername();

    return $this->render('platform/user/login.html.twig', [
        'last_email' => $lastEmail,
        'error'         => $error,
    ]);
}