ZF2 RememberMe在关闭浏览器后过期


ZF2 RememberMe expires after closing Browser

我想要一个登录表单的"记住我"cookie,并在重新打开浏览器之前让它正常工作。我正在使用Zend Framework 2来完成它。

我设置了一个带有复选框的表单,并在验证表单后将其保存在我的控制器中:

$userSession = new Container("test");
$sessionManager = $userSession->getManager();
$sessionManager->rememberMe(1209600);
$sessionManager->start();

在module.config.php中,我有以下会话设置:

'session' => array(
    'name' => 'Test_SESSION',
    'save_path' => realpath('C:'xampp'htdocs'Workspace'test'data'session'),
    'remember_me_seconds' => 1209600,
    'cookie_lifetime' => 1209600,
    'use_cookies' => true,
    'cookie_httponly' => true,
),

最后在module.hp:中

$session = new SessionConfig();
$session->setOptions($this->serviceLocator->get("config")["session"]);

我在网上搜索了任何建议,并尝试了一些方法,但至少当我关闭浏览器时,cookie会被删除。Firefox删除cookie的设置也被检查过,所以它们不会被自动删除。有人有成功的解决方案或提示吗?

编辑:当我获取newtake的代码并将$sessionManager->rememberMe();添加到其中时,关闭浏览器后会话仍然有效,但即使登录过程成功,我也无法再登录。有人听说过这种好奇心吗?

需要设置SessionConfigSessionManager。这是我的配置

'service_manager' => array(
    'factories' => array(
        'Zend'Session'SessionManager' => function ($sm) {
            $sessionConfig = new 'Zend'Session'Config'SessionConfig();
            $sessionConfig->setOptions([
                'use_cookies' => true,
                'gc_maxlifetime' => 1728000,
                'cookie_lifetime' => 1728000,
                'name' => 'COOKIE_NAME',
            ]);
            $sessionManager = new 'Zend'Session'SessionManager($sessionConfig);
            $sessionManager->start();
            return $sessionManager;
        }
    )
)