Zend框架rememberMe()方法似乎不记得我
-
21-09-2019 - |
题
我的会话似乎仅在当前窗口/标签有效。此外,它似乎很快就超时。继承人如何我目前试图做到这一点:
这是在我的登录控制器:
$adapter = $this->getAuthAdapter($data);
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($adapter);
if (!$result->isValid()) {
$this->view->err = "Invalid username or password.<br/>Please try again.";
return $this->render('index'); // re-render the login form
}
Zend_Session::rememberMe(60*60*24*7*4);
这是在我的自举:
Zend_Session::start();
我是比较新的一些这方面的东西,所以多多包涵!任何帮助,将不胜感激。
解决方案
下面是发生了什么事。这个网站是服务器与服务器上的其他网站共享会话文件夹。虽然我的ini_set增加会话有效期,我的会话仍然被其他应用程序中删除。
要解决这个我简单集合的session.save_path到一个新的文件夹。问题解决!
其他提示
我只想补充一点,你改变了session.save_path的与后续行的.htaccess,使其工作。我看到了答案以为我改变了它在.ini,但它是在.htaccess。
例如:
php_value session.save_path /home/kaos/data/sessions/
通过源为Zend_Session寻找,了rememberMe()方法调用rememberUntil(),它调用内置在PHP方法session_set_cookie_params()
所以,你不妨检查一下你的php.ini值 session.cookie_lifetime 。如果它不是0,除非值小于的 session.cookie_lifetime ,然后由Zend_Session :: rememberMe()方法将是无用的。在这种情况下,你会想要将它设置为0或者php.ini文件或应用程序中使用的ini_set()在上的 session.cookie_lifetime人页。
不隶属于 StackOverflow