Size: a a a

2021 April 03

S

Stan in SPb Python
David Shiko
Кстати, я правильно понимаю, что если в 1 ф-и использован await, то во всех вызывающих ф-ях должен быть так-же await?
т.к. await не может быть без async, а async в свою очередь возвращает корутину, которую можно преобразоваь только через await, замкнутый круг)
Всё так. Есть классическая очень хорошая и наглядная статья про это https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/
источник
2021 April 05

DS

David Shiko in SPb Python
Подскажите пожалуйста, какое время жизни я должен установить токенам (refresh и access) если я хочу, что бы пользователь принудительно перелогинивался каждый месяц.
И где хранить refresh токен соответственно, в редисе или постгресе?
источник

II

Ilya Ilyinykh in SPb Python
David Shiko
Подскажите пожалуйста, какое время жизни я должен установить токенам (refresh и access) если я хочу, что бы пользователь принудительно перелогинивался каждый месяц.
И где хранить refresh токен соответственно, в редисе или постгресе?
Сделай refresh на столько сколько тебе хочется чтобы он перелогинивался, а access сделай на несколько минут

У тебя получается не JWT, просто JWT не надо хранить, в этом их и прикол, но я видел что и их хранят.

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

не хотелось бы только что кто угодно имел доступы к БД (авторизация доступа), чтобы там было шифрование еще. Ну это все вроде и там и там имеется.

Ну я могу ошибаться, я не эксперт в авторизациях.
источник

DS

David Shiko in SPb Python
Ilya Ilyinykh
Сделай refresh на столько сколько тебе хочется чтобы он перелогинивался, а access сделай на несколько минут

У тебя получается не JWT, просто JWT не надо хранить, в этом их и прикол, но я видел что и их хранят.

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

не хотелось бы только что кто угодно имел доступы к БД (авторизация доступа), чтобы там было шифрование еще. Ну это все вроде и там и там имеется.

Ну я могу ошибаться, я не эксперт в авторизациях.
> Сделай refresh на столько сколько тебе хочется чтобы он перелогинивался, а access сделай на несколько минут

Тогда выходит нестыковка, рефреш токен должен меняться при обновлении access токена, т.е. установленный срок естестественно не успеет истечь
источник

II

Ilya Ilyinykh in SPb Python
David Shiko
> Сделай refresh на столько сколько тебе хочется чтобы он перелогинивался, а access сделай на несколько минут

Тогда выходит нестыковка, рефреш токен должен меняться при обновлении access токена, т.е. установленный срок естестественно не успеет истечь
ну хз, надо смотреть механизм авторизации ваш ,я же не знаю что там у вас реализовано)

Вот тут по ссылочке я ничего такого не вижу, да может быть revoked, но там для этого должны быть причины ,просто так при каждой выдаче access токена такого налюдаться не должно

https://auth0.com/learn/refresh-tokens/
источник

II

Ilya Ilyinykh in SPb Python
Там кстати и рекомендации по хранению есть
источник

MA

Maxim Afanasev in SPb Python
David Shiko
Подскажите пожалуйста, какое время жизни я должен установить токенам (refresh и access) если я хочу, что бы пользователь принудительно перелогинивался каждый месяц.
И где хранить refresh токен соответственно, в редисе или постгресе?
Я бы рефреш хранил в постгресе. Что касается перелогина каждый месяц - то я с таким требованием не сталкивался, не понятно, какую задачу это решает. Но, если необходимо, можно при обновлении рефреш токена брать дату смерти старого токена и устанавливать её же новому, а первоначально установить её в 1 месяц с момента логина. Тут, правда, надо еще понять, должны ли мы разлогинивать пользователя на всех устройствах и, если да, то через месяц после входа на этом устройстве, или на первом/последнем. Если второй вариант, то там немного сложнее выйдет, но суть примерно та же.
источник

IB

Irena Butakova in SPb Python
А почему удаляется опросник?
Это противоречит правилам чата?
источник

MA

Maxim Afanasev in SPb Python
Irena Butakova
А почему удаляется опросник?
Это противоречит правилам чата?
Я расцениваю это как рекламу вашего курса
источник

DS

David Shiko in SPb Python
Maxim Afanasev
Я бы рефреш хранил в постгресе. Что касается перелогина каждый месяц - то я с таким требованием не сталкивался, не понятно, какую задачу это решает. Но, если необходимо, можно при обновлении рефреш токена брать дату смерти старого токена и устанавливать её же новому, а первоначально установить её в 1 месяц с момента логина. Тут, правда, надо еще понять, должны ли мы разлогинивать пользователя на всех устройствах и, если да, то через месяц после входа на этом устройстве, или на первом/последнем. Если второй вариант, то там немного сложнее выйдет, но суть примерно та же.
Я думал это стандарт, принудительный перелогин каждые N месяцев
источник

A

Alexander in SPb Python
Я бы токены хранил в редисе с указанием времени жизни объекта.
Это такая вещь, которой не жалко пожертвовать если база похерится и заставить всех перелогиниться заново
источник

A

Alexander in SPb Python
А нагрузка на основную бд снизится в некоторых случаях значительно
источник

DS

David Shiko in SPb Python
А самое главное, какое время жизни устанавливать токенам и нужно ли обновлять оба токена при смене access токена (тогда зачем время жизни рефреш токену) ?
источник

A

Alexander in SPb Python
О каких токенах речь? Начнём с этого
источник

DS

David Shiko in SPb Python
Alexander
О каких токенах речь? Начнём с этого
О refresh token и access token
источник

A

Alexander in SPb Python
Да, логично)
Я бы не делал дольше нескольких дней.
Если пользователь за это время не пришёл на сервис, логично его разлогинить
источник

MA

Maxim Afanasev in SPb Python
David Shiko
О refresh token и access token
access - стейтлесс, его в базе хранить не нужно.
источник

DS

David Shiko in SPb Python
Alexander
Да, логично)
Я бы не делал дольше нескольких дней.
Если пользователь за это время не пришёл на сервис, логично его разлогинить
За время жизни 1 логина (несколько дней) пользователь получает только 1 рефреш токен или нет?
источник

MA

Maxim Afanasev in SPb Python
David Shiko
За время жизни 1 логина (несколько дней) пользователь получает только 1 рефреш токен или нет?
На каждое обновление access - новый рефреш и аксесс. Рефреш одноразовый.
источник

DS

David Shiko in SPb Python
Maxim Afanasev
На каждое обновление access - новый рефреш и аксесс. Рефреш одноразовый.
Т.е. действовать как вы предложили, отмерять время жизни токенов, т.е. 1 процедура логина включает в себя несколько рефреш токенов?
источник