REST logout by token

Всё что касается построения API
Ответить
anmaslov
Сообщения: 15
Зарегистрирован: 2014.05.15, 12:06

REST logout by token

Сообщение anmaslov »

В наличии таблица пользователи
id
login
password
etc..

Таблица токенов
id
user_id
token
created_at
updated_at

Токен может передаваться как в заголовках, так и в параметрах.
Есть ли метод, для получения этого самого токена (необходим для logout пользователя)

Обычный logout не подходит, т.к. у одного пользователя может быть несколько токенов (авторизации на разных устройствах).

Второй вопрос: в какой момент лучше всего проверять протухшие токены, и удалять их из таблицы токенов?
Сейчас у меня это реализовано в методе findIdentityByAccessToken:

Код: Выделить всё

 public static function findIdentityByAccessToken($token, $type = null)
    {
        //Очищаю все протухшие токены
        Tokens::clearExpires();
        
        $tokenModel = Tokens::findOne(['token' => $token]);
        if ($tokenModel){
            //Обновляем время доступа по токену (не нашел ни чего лучше, чем выставлять updated_at = 0,
            //а в моделе Tokens через behaviors присваивается new Expression('NOW() at time zone \'utc\'')
            $tokenModel->updated_at = 0;
            $tokenModel->save();

            return $tokenModel->user;
        }
        else
            return false;
    }
Ответить