我正在搞乱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和会话类,但没有区别。
我不知道从哪里开始调试。
答案 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或您的会话不正常),设置新令牌而不是将用户对象保存到会话中。