我想要一个登录表单的"记住我"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();
添加到其中时,关闭浏览器后会话仍然有效,但即使登录过程成功,我也无法再登录。有人听说过这种好奇心吗?
需要设置SessionConfig
到SessionManager
。这是我的配置
'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;
}
)
)