gpt4 book ai didi

cookies - 使用 NextAuth 跨多个域 (CORS) 进行身份验证

转载 作者:行者123 更新时间:2023-12-04 17:24:55 25 4
gpt4 key购买 nike

我想做一个从 domain1.com 到 domain2.com 的 XHR。 domain2.com 是一个使用 NextAuth 的 NextJS 应用程序。
问题是,当我执行此请求时,不包括域 2 的 cookie。我的代码是:

var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function(){
if (httpRequest.readyState === XMLHttpRequest.DONE) {
if (httpRequest.status === 200) {
alert('send successful')
} else {
alert('Error:' + httpRequest.responseText)
}
}
};
httpRequest.withCredentials = true;
httpRequest.open('GET', url, true);
httpRequest.send();
服务器代码:
  const session = await getSession({ req })
if(session == undefined || session.accessToken == undefined) {
res.statusCode = 500;
res.send(JSON.stringify({'error': 'Not logged in'}));
return;
}
我怎样才能做到这一点?

最佳答案

不幸的是,目前 NextAuth.js 并未明确支持此功能。
您可以 set custom cookie policies to support subdomains (例如 auth.example.com、www.example.com、cdn.example.com)但对于目前完全唯一的域,您需要为每个域设置不同的站点。
这被一些像 Auth0 这样的平台支持作为“静默登录”,通常涉及跨域 iframe 在不同域的站点之间传递消息(一个域是“规范的”)。这是一个计划中的功能,可能不会在年底之前下降。
注意:对于某些 OAuth 提供者,您可以使用具有相同 OAuth 客户端/ secret 的不同域,但并非所有提供者都如此,但是如果您仅使用支持此功能的提供者,则可以将所有实例指向同一个数据库。
PS:如果您对如何执行此操作感兴趣,从技术上讲,您可以使用 postMessage API 自己实现(使用或不使用 NextAuth.js)。从屏幕外 iframe 返回 token ,该 token 指向您选择登录的“规范”URL 上的页面;然后您可以读取该 token 以确定用户是否有 session 。
做起来并不太难。它变得复杂的地方是安全地执行此操作,因为这意味着什么取决于场景(例如,它是具有多个有效域和可能不同内容的 Web 应用程序,还是不同域上的多个完全独立的站点,您是否只对客户端感到满意? cookies )。提供一个对每个人都适用的单一解决方案是一个棘手的问题,我实际上还不确定 NextAuth.js 中会是什么样子。

关于cookies - 使用 NextAuth 跨多个域 (CORS) 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64091604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com