Kohana auth считает get_user как логин? - PullRequest
1 голос
/ 15 мая 2011

Я балуюсь с 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 Ответ

2 голосов
/ 15 мая 2011

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

...