Как использовать MongoDB Stitch Auth в изоморфном или SSR приложении?

Хотел бы использовать Stitch в приложении NextJS (в основном изоморфная реакция). Обычно вы можете передавать JWT или токен сеанса в заголовки первоначального запроса, и, если у пользователя уже есть сеанс, вы можете немедленно загрузить все его данные и выполнить гидратацию приложения на сервере.

С помощью Google Firebase Auth вы даже можете сделать это, передав токен в запросе и собрав пользователя на стороне сервера с помощью этого токена.

Я не уверен, как это будет работать со Stitch, хотя. В документации говорится, что Stitch создает токен, который хранится в локальном хранилище. Есть ли способ передать это на сервер для аутентификации пользователя на сервере?

Кроме того, SDK для стежка не изоморфен. Есть сервер и браузер SDK. Можно ли обрабатывать только пользовательские сессии в браузере? Это может затруднить использование приложений для рендеринга на сервере. Я что-то пропустил?

0 ответов

Вы можете получить доступ к токену (автоматически обновляется стежком) в app.user.activeUserAuthInfo.accessToken

На стороне сервера вы декодируете токен и получите что-то вроде этого.

{
  "exp": 1590658522,
  "iat": 1590656722,
  "iss": "5ecf66e9d230045ab06a867b",
  "stitch_devId": "eqwewqewqeq",
  "stitch_domainId": "dewdewwqwewq",
  "sub": "5ecf524c65adwdwedw4ac1185510cff", <---- this is your user ID 
  "typ": "access"
}

Вы можете найти sub, который является вашим ObjectId(_id), который вы можете использовать для получения данных из вашего mongodb.


Прошивка бессерверная. Это означает, что вы можете полностью избавиться от сервера. Вы можете создать приложение-реагировать, создать свое приложение с помощью функций Stitch -> Сборка -> Загрузить все свои статические файлы, а затем оставить все работающим. Без какого-либо сервера и без забот о масштабировании вашего сервера.

Если вам нужен SSR, но вы все еще хотите обрабатывать его на своем собственном сервере, не беспокойтесь об использовании stitch.

Если вы собираетесь использовать nextjs с меньшим количеством серверов, лучше использовать lamda@edge, а затем создавать файлы с помощью компонента serverless-nextjs. А затем вы избавляетесь от стежка полностью и используете Cognito или firebase.

https://www.serverless.com/blog/serverless-nextjs/

Lamda@edge не имеет бесплатного уровня.

Другие вопросы по тегам