В настоящее время я решил эту проблему с помощью JWT. Во время действия токена доступа JWT я полагаюсь на данные, хранящиеся в JWT: идентификатор пользователя и идентификатор клуба (с указанием членства), чтобы избежать необходимости проверять, активным членом какого клуба является пользователь.
Недавно Я прочитал много статей о том, что JWT — это плохая практика и ее часто неправильно используют, и что аутентификация на основе сеанса — лучшее решение. Теперь мне интересно, стоит ли мне переходить к этому, особенно учитывая следующие требования:
- бэкенд PHP должен работать на общем хостинге (1&1 IONOS) , поэтому нет доступного Redis/Memcached (для кэширования состояния аутентификации пользователя и отсутствия необходимости запрашивать БД при каждом запросе) (я думаю?)
- пользователю не придется проходить аутентификацию каждый раз используя приложение, но оставаться в системе в течение 7 дней во время активности, при этом окно аутентификации автоматически расширяется при использовании (возможно ли вообще время жизни сеанса PHP 7 дней на общем хостинге / хорошая идея?)
- Я хочу избежать проверки право доступа пользователя/членство в клубе при каждом запросе API, чтобы уменьшить нагрузку на базу данных (поэтому ранее «кэширование» идентификатора пользователя и идентификатора клуба через JWT)
- Однако мне нужно проверить право доступа пользователя периодически, например каждый 1 час, чтобы разрешить бан потенциального пользователя (до сих пор с JWT я делал эту проверку каждый раз, когда используется токен обновления, проверяя БД, если токен обновления был признан недействительным вручную - я полностью осознаю, что это приводит к тому, что JWT теряет свою апатридность )
- Ожидается, что приложение сможет обслуживать от десятков до сотен одновременных пользователей.
Заранее спасибо за ваши идеи!
Подробнее здесь: https://stackoverflow.com/questions/793 ... th-for-pwa
Мобильная версия