javascript - 如何存储 jwt 令牌以便重定向到其他子域不需要凭据
问题描述
如何存储 jwt 令牌以便重定向到其他子域不需要凭据。我将它存储在一个 cookie 中,但在 iPhone 上,它不起作用。重定向到其他子域时要求输入密码。
function saveJWT(jwtKey, jwtValue) {
let days;
if(!days) {
days = 365* 20;
}
const date = new Date();
date.setTime(date.getTime() + (days* 24 * 60 * 60 * 1000));
console.log(date)
const expires = ';expires' + date.toUTCString();
console.log(expires)
const prodCookie = jwtKey+ "=" +jwtValue+ expires +
";domain=.cerebry.co;path=/"
const devCookie = jwtKey+ "=" +jwtValue+ expires + "; path=/ "
if(location.hostname === "localhost"){
document.cookie = devCookie;
}
else {
document.cookie = prodCookie;
}
}
解决方案
Cookie 应该可以工作,请确保在设置 cookie 时设置正确的路径和根域。如果域在 Set-Cookie 标头中明确命名,则 2 个域 mydomain.com 和 subdomain.mydomain.com 只能共享 cookie。否则,cookie 的范围仅限于请求主机。
如果您使用以下内容,它将在两个域上都可用: Set-Cookie: name=value; 域=mydomain.com
由于 cookie 可能会被 XSS 攻击窃取,因此请确保您防止 token sidetacking 。请参阅 OWASP 以保护您的 JWT 身份验证机制 https://cheatsheetseries.owasp.org/cheatsheets/JSON_Web_Token_for_Java_Cheat_Sheet.html
推荐阅读
- html - 将相对 div 拉伸到其静态父级的高度
- angular - Angular TypeError:“provider.ngAfterViewInit 不是 callProviderLifecycles 的函数”
- reactjs - 如何在开玩笑的单元测试中设置道具
- pandas - 将熊猫值替换为另一个数组的索引
- javascript - How can I add Vanilla JS to my react app to create Image Modal pop-ups?
- excel - 如果之前在其上激活图表,ExportAsFixedFormat 不会导出我的整个工作表
- java - 如何在给定文件和记录中长度大于三个的单词数
- c - 以 CSV 存储的大数据数组中的分段错误读取
- dart - Flutter ScrollView Animation:当孩子改变大小时如何防止滚动动画?
- php - 如何在另一个会话中使用 $_SESSION['variable']?