LINUX.ORG.RU

Как хранить токены?

 ,


0

4

Есть вариант хранить токены в базе данных, но нужно будет запускать крон, на удаления устаревших токенов. Плюс ко всему скорость доступа к базе данных ниже чем к memcache или redis (правдe пишу?).

Если бы это был просто сайт, то можно было бы хранить в сессии, а так я разрабатываю api. Соответственно нету куков, к которой привязать сессию.

Как быть? я склоняюсь к тому, чтобы хранить в redis. Плюсы, минусы?



Последнее исправление: pisipu (всего исправлений: 1)

Если чисто токены хранить типа key = value то минусов в redis не вижу.

P.S. мимокрокодил

И ещё, токены токенами, а жить они сколько будут и какова максимальная частота запросов на обновления токена для данного id будет разрешена?

redis отдаёт быстро, но если будут миллиарды токенов и разрешено бесконечное в сутки колличество обновлений то тут хз.

Dron ★★★★★
()
Последнее исправление: Dron (всего исправлений: 1)
Ответ на: комментарий от Dron

хорошо, еще одно: в каком формате их хранить? Редис хранит в формате ключ = значения. Ключ может быть один, а мне нужно для каждого пользователя отдельно.

То есть я не могу хранить как token = 3jfj43u34tj34jg433...343rggw Нужно хранить как token{id} = 3jfj43u34tj34jg433...343rggw

Вот где взять это id? Или пусть id будет 3jfj43u34tj34jg433...343rggw? Тогда ключ будет слишком большой - ничего страшного?

pisipu
() автор топика
Ответ на: комментарий от pisipu

Тогда получай ключ конкатенацией - token:id скажем. Или используй HASH'и, если id для одного токена не будет слишком много.

Suntechnic ★★★★★
()

Плюс ко всему скорость доступа к базе данных ниже чем к memcache или redis (правдe пишу?).

Нет, ты можешь хранить все в памяти и дальше будешь терять только несколько мс оверхеда в pgsql/mysql на разбор твоего запроса.

Как быть? я склоняюсь к тому, чтобы хранить в redis. Плюсы, минусы?

Лучше в zookeeper если у тебя что-то более или менее распределенное.

xpahos ★★★★★
()
28 ноября 2016 г.

Токены не надо хранить. Подписывай hmacом нужные данные и используй в качестве токена. То есть подписываешь какой-нибудь user_id:expire_timestamp и все.

anonymous
()
Ответ на: комментарий от pki_gost

Госпожа Белладонна: Где надо ловить рыбу?
Пинчер-старший: В речке.
Госпожа Белладонна: Правильно. А циркачей?
Добер-младший: В озере!!!

:D

По сабжу: JSON Web Tokens.

neversleep ★★
()
Последнее исправление: neversleep (всего исправлений: 1)

А если не секрет как должна выглядеть готовая система?

Прост мне непонятно зачем токены хранить на сервере? Почему бы не заюзать например JWT?

deterok ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.