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

Posted

技术标签:

【中文标题】如何在同构或 s-s-r 应用程序中使用 MongoDB Stitch Auth?【英文标题】:How to use MongoDB Stitch Auth in isomorphic or s-s-r app? 【发布时间】:2019-05-30 09:03:24 【问题描述】:

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

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

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

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

【问题讨论】:

我也有同样的问题。你找到答案了吗 我继续尝试使用这个库,但这是他们 github 上的一个持续问题。问题位于:github.com/mongodb/stitch-js-sdk/issues/186 是的。我也在看#186。但是我得到了一些链接,这些链接可能对将来面临同样问题的开发人员有用。 Link 【参考方案1】:

您可以在 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 函数构建您的应用程序 -> 构建 -> 上传所有静态文件,然后让一切运行。无需任何服务器,无需担心扩展服务器。

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

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

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

Lamda@edge 没有免费套餐。

【讨论】:

以上是关于如何在同构或 s-s-r 应用程序中使用 MongoDB Stitch Auth?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Next.js SSG 或 s-s-r 中使用 Redux 工具包调度?

构建同构 React 应用程序时如何处理 SASS 的导入?

如何在 laravel 应用程序中为单个 vue 组件实现 s-s-r?

如何在 docker 中启动 vuejs s-s-r 服务器

如何在 Vue 3 s-s-r 应用程序的路由器中使用 vuex 商店?

在 react s-s-r 应用程序中调用 firebase 消息传递方法时,如何修复 self 未定义?