У меня есть веб-сервер, который обслуживает веб-сайт для пользователей. Через этот сайт они могут войти в систему, используя oauth, который я сейчас храню в сеансе на сервере. Сеанс в основном просто говорит мне, что это за пользователь, и если они вошли или нет (это все, что я хочу от него).Аутентификация: сеансы, JWT или что-то еще?
У меня тогда есть API-сервер, который используется только для запроса информации, которая может быть защищена (т. Е. Только подписанные пользователи могут ее увидеть). API-сервер доступен только через главный сервер, который просто проксирует все. API-сервер имеет доступ к одному хранилищу резервных копий, что означает, что он может читать сеансы и обрабатывать запросы, требующие проверки подлинности. Примером такого подхода является то, что поскольку сеанс сохраняется только в памяти до сохранения, мне нужно сохранять его каждый раз, когда запрос будет проксирован на сервер, чтобы гарантировать, что API-сервер имеет свежие данные.
Но это не настоящая проблема. Истинная проблема заключается в том, когда пользователь посещает, говорит /account
, я хочу предварительно собрать все данные, которые им нужны, и построить весь сайт на сервере, прежде чем отправлять их (чтобы у них не было дождаться http-запроса и снова отобразить весь сайт). Это проблематично, потому что, когда сервер пытается получить доступ к области, которую могут видеть только прошедшие проверку подлинности пользователи, ей становится отказано. Чтобы обойти это, мне нужно будет ввести идентификатор сеанса в запрос и переработать много кода, который интуитивно чувствует себя как неправильный подход. Если я использую JWT, я мог бы создать «суперпользовательский токен», который будет генерировать сервер, который позволит ему получить доступ к любой части аутентифицированной области, но это также становится рискованным.
Что вы, ребята, думаете?
Некоторая дополнительная информация, которая может иметь отношение:
- Я использую реагировать и делать на стороне сервера визуализации
- Я использую Redux (который является состояние Стараюсь предварительного заполнения)
- Я используя Узел
Заранее благодарен!