如何在同构或SSR应用程序中使用MongoDB Stitch Auth?

2024-04-04

想要在 NextJS 应用程序中使用 Stitch(基本上是同构反应)。通常,您可以在初始请求的标头中传递 JWT 或会话令牌,如果用户已有会话,您可以立即加载其所有数据并在服务器上合并应用程序。

使用 Google Firebase Auth,您甚至可以通过在请求中传递令牌并使用该令牌在服务器端收集用户来完成此操作。

不过,我不确定这对 Stitch 来说如何。文档称 Stitch 创建了一个存储在本地存储中的令牌。无论如何,是否可以将其传递给服务器以用于对服务器上的用户进行身份验证?

此外,stitch 的 SDK 并不是同构的。有一个服务器和一个浏览器 SDK。只能在浏览器中处理用户会话吗?这似乎使其难以用于服务器渲染的应用程序。我错过了什么吗?


您可以在 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 是无服务器的。这意味着您可以完全摆脱服务器。您可以创建-react-app,使用 Stitch 函数构建您的应用程序 -> 构建 -> 上传所有静态文件,然后让所有内容保持运行。无需任何服务器,无需担心服务器扩展。

如果您想要 SSR,并且仍然想在自己的托管服务器上处理它,请不要使用 Stitch。

如果您打算在无服务器的情况下使用 nextjs,最好使用 lamda@edge,然后使用 serverless-nextjs 组件构建文件。然后你就可以摆脱所有缝合并使用 Cognito 或 firebase。

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

不过 Lambda@edge 没有免费套餐。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在同构或SSR应用程序中使用MongoDB Stitch Auth? 的相关文章

随机推荐