在symfony securityauthenticateUserAndHandleSuccess

问题描述

我在登录方法方面遇到了 symfony 安全性问题。

我通过 3rd 方系统创建身份验证(我在我的数据库中存储了来自与用户关联的外部系统的令牌信息),成功后,我只从数据库中选择用户数据并通过身份验证

            return $guardHandler->authenticateUserAndHandleSuccess(
                $user,$request,$formAuthenticator,'main'
            );

但是,我想在这种授权方法认设置 remember_me。 我在security.yml中设置

        main:
            anonymous: true
            lazy: true
            provider: app_user_provider
            switch_user: true
            remember_me:
                secret: '%kernel.secret%'
                lifetime: 2592000
                always_remember_me: true

但它仅适用于普通登录表单,而不适用于使用 authenticationUserAndHandleSuccess 方法时。

在这种情况下如何认设置remember_me cookie?

解决方法

从它记录的代码源:

/**
     * Does this method support remember me cookies?
     *
     * Remember me cookie will be set if *all* of the following are met:
     *  A) This method returns true
     *  B) The remember_me key under your firewall is configured
     *  C) The "remember me" functionality is activated. This is usually
     *      done by having a _remember_me checkbox in your form,but
     *      can be configured by the "always_remember_me" and "remember_me_parameter"
     *      parameters under the "remember_me" firewall key
     *  D) The onAuthenticationSuccess method returns a Response object
     *
     * @return bool
     */
public function supportsRememberMe();

是否满足所有这些要求?