如何解决下一个身份验证 + 下一个 JS 我的问题:
我正在尝试使用 NextAuth 作为我的项目的身份验证提供程序。我有一个要求,我有基于凭据的登录名/密码。在这种情况下,当我登录时,我必须将用户名/密码传递给自定义 API(例如:abc.com/auth/login)。这个 API 成功后将返回一个 JWT,以便将来访问他们的资源时进行通信。
我从 NextAuth 了解到它维护自己的会话和 JWT(如果未提供 DB)。此功能适用于我的情况,但我必须维护 API 返回给我的 JWT(如上所述)。所以现在有两个 JWT,一个是我从 API 收到的,另一个是 NextAuth 创建的。
我的问题:
- 有什么方法可以用来维护我从 API 收到的自定义 JWT?
- 如果 API 令牌已过期,有没有办法调整以便我可以终止 NextAuth 会话。
- 保持 NextAuth 会话和自定义 JWT 令牌同步的最佳方法是什么?
提前致谢!
解决方法
在 Next-auth repo 讨论中得到了答案。
这个解决方案对我有用。
因此,我们可以让 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。