6

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

使用 Google Firebase 身份验证,您甚至可以通过在请求中传递令牌并使用该令牌在服务器端收集用户来做到这一点。

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

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

4

1 回答 1

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

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

如果您打算使用带有 serverless 的 nextjs,最好使用 lamda@edge,然后使用 serverless-nextjs 组件构建您的文件。然后你摆脱所有缝合并使用 Cognito 或 firebase。

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

不过,Lamda@edge 没有免费套餐。

于 2020-05-28T09:08:28.520 回答