Функциональность модуля аутентификации Kohana V3 user_token

StackOverflow https://stackoverflow.com/questions/2545235

Вопрос

Может ли кто-нибудь рассказать о функциональности user_token в модуле Auth?Что такое использование и как это включается в модуль Auth?

Это было полезно?

Решение

Он используется, когда пользователь устанавливает флажок «Запомнить меня» на вашем сайте.Для пользователя генерируется токен и сохраняется в таблице user_tokens.

Если вы посмотрите на класс Kohana_Auth_ORM в _авторизоваться функцию, вы можете увидеть, как она создается:

    if ($remember === TRUE)
    {
        // Create a new autologin token
        $token = ORM::factory('user_token');

        // Set token data
        $token->user_id = $user->id;
        $token->expires = time() + $this->config['lifetime'];
        $token->save();

        // Set the autologin cookie
        cookie::set('authautologin', $token->token, $this->config['lifetime']);
    }

Он используется автоматическая авторизация() функция также в классе Kohana_Auth_ORM:

/**
 * Logs a user in, based on the authautologin cookie.
 *
 * @return  boolean
 */
public function auto_login()
{
    if ($token = cookie::get('authautologin'))
    {
        // Load the token and user
        $token = ORM::factory('user_token', array('token' => $token));

        if ($token->loaded() AND $token->user->loaded())
        {
            if ($token->user_agent === sha1(Request::$user_agent))
            {
                // Save the token to create a new unique token
                $token->save();

                // Set the new token
                cookie::set('authautologin', $token->token, $token->expires - time());

                // Complete the login with the found data
                $this->complete_login($token->user);

                // Automatic login was successful
                return TRUE;
            }

            // Token is invalid
            $token->delete();
        }
    }

    return FALSE;
}

Правильное использование этой возможности в вашем контроллере авторизации зависит от вас.Я относительно новичок в Kohana, но я выполняю простую проверку, чтобы перенаправить пользователя, если он перешел к форме входа и уже вошел в систему или может автоматически войти в систему:

if (Auth::instance()->logged_in() || Auth::instance()->auto_login())
    Request::instance()->redirect('auth/');

Код модуля Auth не так уж и сложен для понимания.Если вы новичок в Kohana, это хорошая отправная точка, чтобы увидеть, как работает модуль ORM.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top