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, либо из-за того, что ваш сеанс не в порядке), вместо сохранения пользовательского объекта в сеансе устанавливается новый токен.

Другие вопросы по тегам