下一个 Auth + 下一个 JS

Next Auth + Next JS

我正在尝试使用 NextAuth 作为我项目的身份验证提供程序。我有一个要求,我有基于 login/password 的凭据。在这种情况下,当我登录时,我必须将 username/password 传递给自定义 API(例如:abc.com/auth/login)。这 API 作为成功将 return 我一个 JWT 用于未来通信以访问他们的资源。

我从 NextAuth 了解到它维护自己的会话和 JWT(如果未提供数据库)。此功能适用于我的情况,但我必须维护 API 对我进行 return 的 JWT(如上所述)。所以现在有两个 JWT,一个是我从 API 收到的,另一个是 NextAuth 创建的。

我的问题:

提前致谢!

在 Next-auth 回购协议本身的讨论中得到了答案。

这个解决方案对我有用。

因此,我们可以让 next-auth 生成包含与 API 提供的相同负载的 JWT 令牌(我们可以在 API 中禁用令牌签名验证)。

然后更新 next-auth 配置以在 cookie 中保存令牌 has httpOnly: false 这样我们就可以通过在配置中添加它来访问令牌服务器和客户端:

const options = {
   // ...
   cookies: { sessionToken: { name: `next-auth.session-token`, options: { httpOnly: false } } },
}

之后我们可以使用代码获取 JWT 令牌以传递给来自服务器端和客户端的 API 调用:

import cookies from 'next-cookies'
import Cookies from 'js-cookie'

// Server-Side
cookies(context)['next-auth.session-token']
// Client-side
Cookies.get('next-auth.session-token')

现在我们只需要弄清楚如何保存我的 API 提供的 JWT 令牌,而不是使用 next-auth 生成的令牌。

然后我们就可以在后台重新激活签名验证了API。

你可以关注话题here