У меня есть API для книжной веб-библиотеки, и некоторым из них (я думаю, около 40%) нужно проверить некоторые пользовательские данные (для таких действий, как добавление книги, добавление тега, оценка и т. Д.):
Статический
- Идентификационный номер (id)
Динамический (эти значения могут изменяться)
HowМогу ли я сделать это настолько простым, безопасным и масштабируемым, насколько это возможно?Каковы текущие тенденции?
На данный момент я знаю следующие методы:
1) После входа в систему вы сохраняете все данные в БД и устанавливаете сеанс пользователя в куки.По запросу вы загружаете данные из БД на стороне сервера, проверяете сеанс пользователя и используете данные БД для проверки динамических значений для этого вызова API.
- Плюсы: простой, масштабируемый
- Минусы: загрузка БД(но, может, это нормально?)
2) После входа в систему вы предоставляете токен доступа пользователя со всеми данными (например, JWT) и используете его при каждом запросе, проверяя на стороне сервера без необходимости запросов к БД.
- Плюсы: простой, масштабируемый, нет необходимости в вызовах БД для проверки пользователя.
- Минусы: нет способа обновить / запретить токен, если динамические значения (бан, доверие) были изменены (или может есть способ?).Я могу обновить токены Patreon, если запрос patreon с сервера получил ошибку.
3) После входа в систему вы сохраняете все данные в Redis со сроком действия, если он не используется, и устанавливаете сеанс пользователя в куки.По запросу вы загружаете данные из Redis на стороне сервера, проверяете сеанс пользователя и используете эти данные Redis для проверки динамических значений для этого вызова API.
- Плюсы: быстро, нет необходимости в вызовах БД для проверки пользователя.
- Минусы: сложные, для масштабирования вам понадобится отдельный общий сервер Redis для динамических проверок пользователей (возможно, не так уж много разницы, если вы просто загрузите из db, как в примере 1?)