【问题标题】:Zend Framework rememberMe() doesnt seem to remember meZend Framework remember Me() 似乎不记得我
【发布时间】:2010-12-07 06:12:24
【问题描述】:

我的会话似乎只在当前窗口/选项卡中有效。它似乎也很快超时。以下是我目前正在尝试的方式:

这是在我的登录控制器中:

$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();

我对这些东西比较陌生,所以请耐心等待!任何帮助将不胜感激。

【问题讨论】:

    标签: zend-framework authentication session remember-me


    【解决方案1】:

    这就是发生的事情。该网站位于与服务器上的另一个网站共享会话文件夹的服务器上。即使我使用 ini_set 增加了会话寿命,我的会话仍然被其他应用程序删除。

    为了解决这个问题,我只需将 session.save_path 设置为一个新文件夹。问题解决了!

    【讨论】:

      【解决方案2】:

      我只想补充一点,您可以使用后续行更改 .htaccess 中的 session.save_path 以使其正常工作。我看到答案以为我在.ini中更改了它,但它在.htaccess中。

      例如:

      php_value session.save_path /home/kaos/data/sessions/
      

      【讨论】:

        【解决方案3】:

        查看zend_session的源码,rememberMe()方法调用了rememberUntil(),rememberUntil()调用了内置的php方法session_set_cookie_params()

        因此您可能希望检查 session.cookie_lifetime 的 php.ini 值。如果它不为 0,那么 Zend_Session::rememberMe() 将无用,除非该值小于 session.cookie_lifetime。在这种情况下,您可能希望在 php.ini 或您的应用程序中使用 ini_set() 将其设置为 0,如 session.cookie_lifetime man page 的第一条评论中所示。

        【讨论】:

        • 嗨,马克,很抱歉延迟回复。这几天没想到这里看看。 cookie_lifetime 实际上设置为 0。我读过需要在 session_start() 之前调用 rememberMe,以便 session_set_cookie_params 可以设置生命周期。但是,我还读到 zend_session::start() 应该进入引导程序,在登录脚本运行并执行 rememberMe() 之前调用它。有什么想法吗?
        • 试一试,在会议开始后立即拨打 rememberMe 电话。在那里设置超时不会有什么坏处,因为您实际上还没有进行身份验证
        猜你喜欢
        • 1970-01-01
        • 2011-04-11
        • 1970-01-01
        • 1970-01-01
        • 2013-02-19
        • 2021-02-04
        • 1970-01-01
        • 2011-04-14
        • 2014-08-26
        相关资源
        最近更新 更多