用NestJS后端和Next.js前端创建一个webapp有意义吗?+认证[已关闭]

cigdeys3  于 2023-05-06  发布在  其他
关注(0)|答案(1)|浏览(203)

**已关闭。**此问题正在寻求书籍、工具、软件库等的建议。它不符合Stack Overflow guidelines。目前不接受答复。

我们不允许问题寻求书籍,工具,软件库等的建议。您可以编辑问题,以便可以用事实和引用来回答。
3天前关闭。
Improve this question
我正在尝试使用Next.js在React中创建一个Web应用程序。我有NestJS后端开发的经验,所以我也想在这个网站上使用它。我仍然感到困惑的是,这样分离是否有意义- React + Next.js前端,NestJS后端。
如果它确实有意义,我对用户身份验证应该在哪里发生感到困惑。
我看过NextAuth.js,但我认为认证应该在后端处理,而不是前端?在后端,我发现了password-js,但我不知道它如何连接到前端
我看过很多关于这些框架的网站,但是我很困惑

avwztpqn

avwztpqn1#

位置

我会说位置真的取决于你的项目范围和你的偏好,如果你做的东西相对较小,那么我会使用Next.js,但如果你做的东西比使用外部服务器更大,可能会更好。

身份验证

所以Next.js是服务器端渲染的,所以它可以在前端和后端执行操作。所以NextAuth.js的工作方式是它部分运行在Next.js的服务器端,部分运行在客户端。它处理认证和验证服务器端和交互客户端。
password-js我假设你的意思是passport-js,因为我找不到一个同名的库。因此,有几种方法可以使用passport.js处理身份验证,其中一种方法是使用JWT令牌,它是一个唯一的base64编码令牌,包含用户ID和其他一些数据(请注意,JWT令牌中的任何信息都没有加密,只是签名。所以里面的所有数据都是公开的),它在服务器上用私钥签名,并且在登录时由所述服务器验证。
处理身份验证的另一种方法是使用会话令牌,其中您在DB中有一个记录,其中包含会话令牌(基本上是一个随机ID)以及其他一些信息,如到期日期。这个会话令牌可以在登录时提供给前端,稍后当操作需要在服务器上通过检查记录是否存在于DB中进行身份验证时提供给用户。
会话令牌的主要优点是,它通常被认为更安全,因为它可以在任何时候撤销,相比之下,您可以为JWT设置到期日期,但您不能撤销令牌,这可能是一个问题,如果说帐户被泄露,则无法撤销该令牌,直到它到期。请注意,passport.js在内部支持这些方法,你不必重新实现它们,你可能想看看https://www.passportjs.org/tutorials/password/session/和这个https://stytch.com/blog/jwts-vs-sessions-which-is-right-for-you/,以更深入地比较JWT和Sessions。

相关问题