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

时间:2019-01-03 18:37:17

标签: mongodb next.js mongodb-stitch

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

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

不过,我不确定Stitch怎么用。文档说Stitch创建了一个令牌,该令牌存储在本地存储中。无论如何,有没有将其传递给服务器以用于认证服务器上的用户?

此外,针脚的SDK不是同构的。有一个服务器和一个浏览器SDK。一个人只能在浏览器中处理用户会话吗?这似乎使它难以用于服务器呈现的应用程序。我想念什么吗?

1 个答案:

答案 0 :(得分: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没有免费套餐。