Помогите разобраться в работе сессий пользователя на основе JWT. Сейчас реализовал такой функционал:
при авторизации пользователя создается JWT который записывается в redis в таком виде
{
'session' : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ0b3B0YWwuY29tIiwiZXhwIjoxNDI2NDIwODAwLCJodHRwOi8vdG9wdGFsLmNvbS9qd3RfY2xhaW1zL2lzX2FkbWluIjp0cnVlLCJjb21wYW55IjoiVG9wdGFsIiwiYXdlc29tZSI6dHJ1ZX0.yRQYnWzskCZUxPwaQupWkiUzKELZ49eM7oWxAQK_ZXw
}
В токене есть нужная инфа по юзеру - id, email, permission_type
теперь, как я понимаю каждый запрос где должна выполняться проверка на авторизацию должен проверять наличие у пользователя сессии либо редиректить на страницу log_in
Код у меня на питоне, но смысл я думаю понятен
async def get_current_user():
try:
session = await redis_cache.get('session')
payload = jwt.decode(
session,
config('JWT_SECRET'),
algorithms=config('JWT_ALGORITHM'),
)
return payload['user']
except Exception as e:
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN, detail="Invalid authentication"
)
Мой вопрос:
как сматчить пользователя с токеном в редисе, вот этот вот запрос
session = await redis_cache.get('session')
как понять какой ключ передавать в запросе get('
session')
И какой ключ использовать при формировании записи токена в БД.
Т.е сейчас у меня хардкод для одного пользователя, есть ключ session в БД и его же я передаю в запросе . Но какая логика должна быть при большом кол-ве пользователей?