Kohana auth将get_user计为登录名?

时间:2011-05-14 20:13:21

标签: php kohana kohana-3 kohana-orm kohana-auth

我正在搞乱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和会话类,但没有区别。

我不知道从哪里开始调试。

1 个答案:

答案 0 :(得分:2)

您正在监督您的整个其他块是不明确的事实,因为对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或您的会话不正常),设置新令牌而不是将用户对象保存到会话中。