Где сохранять пользовательские данные (личность, бан, доступ) и как проверять их при каждом запросе вызовов API? - PullRequest
1 голос
/ 26 апреля 2019

У меня есть API для книжной веб-библиотеки, и некоторым из них (я думаю, около 40%) нужно проверить некоторые пользовательские данные (для таких действий, как добавление книги, добавление тега, оценка и т. Д.):

Статический

  • Идентификационный номер (id)

Динамический (эти значения могут изменяться)

  • Уровень доступа (для некоторых вызовов API это 10, для других - 20).

  • Ban (true или false).

  • Токены для вызовов patreon api.

HowМогу ли я сделать это настолько простым, безопасным и масштабируемым, насколько это возможно?Каковы текущие тенденции?


На данный момент я знаю следующие методы:

1) После входа в систему вы сохраняете все данные в БД и устанавливаете сеанс пользователя в куки.По запросу вы загружаете данные из БД на стороне сервера, проверяете сеанс пользователя и используете данные БД для проверки динамических значений для этого вызова API.

  • Плюсы: простой, масштабируемый
  • Минусы: загрузка БД(но, может, это нормально?)

2) После входа в систему вы предоставляете токен доступа пользователя со всеми данными (например, JWT) и используете его при каждом запросе, проверяя на стороне сервера без необходимости запросов к БД.

  • Плюсы: простой, масштабируемый, нет необходимости в вызовах БД для проверки пользователя.
  • Минусы: нет способа обновить / запретить токен, если динамические значения (бан, доверие) были изменены (или может есть способ?).Я могу обновить токены Patreon, если запрос patreon с сервера получил ошибку.

3) После входа в систему вы сохраняете все данные в Redis со сроком действия, если он не используется, и устанавливаете сеанс пользователя в куки.По запросу вы загружаете данные из Redis на стороне сервера, проверяете сеанс пользователя и используете эти данные Redis для проверки динамических значений для этого вызова API.

  • Плюсы: быстро, нет необходимости в вызовах БД для проверки пользователя.
  • Минусы: сложные, для масштабирования вам понадобится отдельный общий сервер Redis для динамических проверок пользователей (возможно, не так уж много разницы, если вы просто загрузите из db, как в примере 1?)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...