Kohana auth считает get_user как логин?
Я возиться с KO3 и модулем аутентификации, у меня логины работают достаточно хорошо, но я заметил, что каждый раз, когда я обновляю страницу, число логинов для моих пользовательских приращений.
Я уверен, что это из этого раздела.
// 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();
}
}
Теперь я уверен, что это линия, где я передаю объект users в представление. Строка прокомментирована с // Here?
,
Мне просто интересно, почему это будет увеличивать логины. Я проверил источник, и все, что он делает, это чтение переменных сеанса.
РЕДАКТИРОВАТЬ
Я думал, что я исправил это после того, как мне объяснили. Очевидно нет. Я не совсем уверен, что дело до сессий, я пытался использовать cookie и классы сессий из репозитория GitHub, но это не имело никакого значения.
Я не уверен, где начать отладку этого.
1 ответ
Вы наблюдаете за тем, что весь ваш блок 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, либо из-за того, что ваш сеанс не в порядке), вместо сохранения пользовательского объекта в сеансе устанавливается новый токен.