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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在同构或SSR应用程序中使用MongoDB Stitch Auth?相关的知识,希望对你有一定的参考价值。

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

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

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

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

答案

针迹身份验证在客户端起作用。如果要在服务器端使用它,则必须自己处理身份验证,然后在自定义JWT身份验证下生成JWT令牌并将其传递给Stitch作为标识。

如果您仍然想继续使用Stitch的电子邮件/密码,Facebook身份验证方法,则可以尝试此操作。

但是,如果您已经熟悉绣法,我还没有尝试过。

我将为每个身份验证请求创建一个触发器

  1. 创建触发器
  2. 与认证相关的创建功能->创建/登录
  3. 创建函数以使用jsonwebtoken生成令牌(需要上传依赖项。)>>
  4. 在用户自定义数据中添加JWT令牌。
  5. 当您在客户端(app.auth.user)上登录时,customData将包括JWT令牌传递,您可以在每次获取时将其设置为Bearer,或者在刷新时将其设置为cookie。


针迹是无服务器的。意味着您可以完全摆脱服务器。您可以创建反应应用程序,使用Stitch函数构建应用程序->构建->上传所有静态文件,然后使所有内容运行。没有任何服务器,也无需担心扩展服务器。

如果您想要SSR,但仍想在自己的托管服务器上对其进行处理,请不要使用针脚。

如果您打算在服务器较少的情况下使用nextjs,最好使用lamda @ edge,然后使用serverless-nextjs组件构建文件。然后,您可以完全摆脱针脚,并使用Cognito或firebase。

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

Lamda @ edge没有免费套餐。

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

开源 | Umajs框架react-ssr同构最佳实践方案

彻底理解服务端渲染 - SSR原理

Part3-4-1 搭建自己的SSR

大前端时代,如何做好C 端业务下的React SSR?

前端SSR的落地实践

H5页面如何进行首屏优化