1

我正在搞乱 KO3 和 auth 模块,我的登录工作很好,但我注意到每次刷新页面时,我的用户的登录计数都会增加。

我很确定它来自本节。

// Check if logged in
if ($this->auth->logged_in())
{
    // Pass user to view
    $this->view->user = $this->auth->get_user(); // Here?
}
else
{
    // Attempt auto login
    $this->auth->auto_login();

    // Check if logged in
    if ($this->auth->logged_in())
    {
        // Pass user to view
        $this->view->user = $this->auth->get_user();
    }
}

现在我很确定这是我将用户对象传递给视图的行。该行用 注释// Here?

我只是想知道为什么这会增加登录次数。我已经检查了源代码,它所做的只是读取会话变量。

编辑

在我向我解释之后,我以为我已经解决了这个问题。显然不是。我不太确定这取决于会话,我尝试使用 GitHub 存储库中的 cookie 和会话类,但这并没有什么区别。

我不确定从哪里开始调试。

4

1 回答 1

2

您正在监督整个 else 块是模棱两可的事实,因为对 Auth_ORM::logged_in() 的单个调用会导致以下情况:

Auth_ORM::logged_in() 
-> Auth_ORM::get_user() 
-> Auth_ORM::auto_login()
-> Auth_ORM::complete_login()
-> Model_Auth_User::complete_login()

所以你的代码实际上会像这样做同样的事情:

// Check if logged in
if ($this->auth->logged_in())
{
    // Pass user to view
    $this->view->user = $this->auth->get_user();
}

并且Model_Auth_User::complete_login()是登录计数增加的地方。

您的问题是Auth_ORM::auto_login()总是被调用(因为 PEBKAC 或您的会话不正常),设置新令牌而不是将用户对象保存到会话中。

于 2011-05-15T10:49:38.697 回答