多网页登录Cookie免登通俗理解

背景,现在有A、B两个系统,其中B是乾坤框架的微前端,里面又有若干可以单独运行的系统C、D、E、F,现在的目标是,如果没有登录过其中任一系统,则需要跳转登录页登录,登录后,所有的A-F都不再需要登录,登录token有效期12h,每次访问都重新刷新12h,上面A-F的域名结尾都是abc.com如a.abc.com、b.abc.com

解决思路:利用浏览器的Cookie实现

登录页面登录后,登录前端在Cookie存放token,先来看下面效果

首先是cookie的key值,也就是_micro.common-info

然后value值是自己前端定义的,比如我这里定义了 环境变量+token

然后是Domain,这是个领域的意思,一般用于区分不同的域名

核心代码是setCookie和getCookie,Cookie.js如下

import Cookies from 'js-cookie';
const TOKENKEY = 'xToken';
const COOKIEKEY = '_micro-common-info';
const ENV = process.env.ENV_CONFIG;
const DOMAIN = 'paymentru.com';
const REG = /paymentru\.com$/;export function getCookie() {const cookie = getAllCookie()[ENV];return cookie && cookie[TOKENKEY];
}export function setCookie(token) {const cookie = getAllCookie();if (!cookie[ENV]) {cookie[ENV] = {};}cookie[ENV][TOKENKEY] = token;// save the token for 1 yearreturn new Promise((resolve, reject) => {try {Cookies.set(COOKIEKEY, cookie, {domain: getDomain(),});resolve();} catch (error) {reject(error);}});
}export function removeCookie() {setCookie('');return true;
}function getDomain() {return ['localhost', '127.0.0.1', '0.0.0.0'].includes(document.domain)? document.domain : REG.test(document.domain) ? DOMAIN : document.domain;
}function getAllCookie() {const cookStr = Cookies.get(COOKIEKEY, {domain: getDomain(),});if (cookStr && typeof cookStr == 'string') {try {const cookie = JSON.parse(cookStr);if (cookie && typeof cookie == 'object') {return cookie;}} catch (e) {console.error(e);}}return {};
}
其中这里比较关键
const DOMAIN = 'paymentru.com';
const REG = /paymentru\.com$/;
function getDomain() {return ['localhost', '127.0.0.1', '0.0.0.0'].includes(document.domain)? document.domain : REG.test(document.domain) ? DOMAIN : document.domain;
}

解释下来的意思就是 getDomain 函数返回当前文档的域名。如果域名是 'localhost''127.0.0.1' 或 '0.0.0.0' 中的一个,它将返回当前域名。否则,它将检查当前域名是否符合正则表达式 /paymentru\.com$/ [这个正则表达式的意思是匹配以paymentru.com结尾的域名],如果符合,则返回常量 DOMAIN 的值 'paymentru.com',否则返回当前域名

所以ABCD系统登录时,先去paymentru.com这个Domain下指定环境变量的Cookie获取token,这样这些系统都用统一后缀的cookie实现互相免登

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/29716.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 自动化测试入门有哪些内容?

自动化测试是软件测试领域中的一个重要技术,它利用脚本和工具来执行测试任务,减少了人工操作的工作量和时间消耗。Python 是一种功能强大且易于学习的编程语言,被广泛应用于自动化测试领域。本文将从0到1讲解如何使用 Python 进行自动化测试&…

网络编程(一)基本概念

文章目录 一、概念(一)网络发展阶段1. ARPAnet阶段2. TCP/IP两个协议阶段3. 网络体系结构和OSI开放系统互联模型4. TCP/IP协议簇体系结构(1) 应用层:(2)传输层:(3&#x…

白名单在数据防篡改方面的优势与局限

白名单作为一种安全机制,其主要目的是通过预先设定受信任的程序、文件或用户列表,来限制系统资源的访问和执行权限。这种机制在防止未授权的程序或文件运行方面具有一定的效果,从而在一定程度上减少病毒入侵的机会。然而,当我们探…

读书笔记-《人人都是产品经理》

在开发工程师与产品经理的段子中,常看到“人人都是产品经理”这句话,用来调侃这个岗位似乎没有什么门槛。 很明显,这句话的出处,即本书作者想表达的是每个人都可以运用产品思维去解决问题。 01 产品 产品:用来解决某…

python中scrapy

安装环境 pip install scrapy 发现Twisted版本不匹配 卸载pip uninstall Twisted 安装 pip install Twisted22.10.0 新建scrapy项目 scrapy startproject 项目名 注意:项目名称不允许使用数字开头,也不能包含中文 eg: scrapy startproject scrapy_baidu_…

接口响应时间测试

curl 要使用 curl 测试一个接口的响应时间具体步骤和命令示例: 打开你的终端或命令行工具。 使用 curl 命令并添加 -w(或者 --write-out)参数来输出时间统计信息。 示例命令: curl -o /dev/null -s -w "Time to Connect: %{time_connect}\nTime to Start Transfer: …

热重启(硬重启)获取Bitlocker密钥取证

计算机内存(条)在系统运行时存储了大量敏感信息,当断电后,内存中的数据荡然无存。反之,当一直通电的情况下,内存中的一些敏感数据一直存在。当然,正如某些人了解的,当断电后&#xf…

管道光电液位传感器应用在哪些设备

管道光电液位传感器在现代智能设备中扮演着至关重要的角色,特别是在需要检测水管缺水的应用场景中。与传统的浮球开关相比,这种传感器具有高可靠性、稳定性和不易卡死等优点。其先进的光学感应原理无需机械运动,确保了长久的寿命和稳定的性能…

UE4 游戏最快查找ulocalplayer方法

办法1: 1- 打开 CE 2- 搜索字符串“LocalPlayer”而不是“ULocalPlayer”,只需搜索“LocalPlayernullchar” - 在 CheatEngine Memory Viewer 中将会显示类似“LocalPlayer”的内容。 3- 获取此名称的索引(来自 gnames [从搜索字符串中获取的…

Openharmony应用权限声明及权限列表

应用权限管控概述 简介 系统提供了一种允许应用访问系统资源(如:通讯录等)和系统能力(如:访问摄像头、麦克风等)的通用权限访问方式,来保护系统数据(包括用户个人数据)…

《CGT行业监管及上市路径解析》——锦天城高级合伙人虞正春先生在线分享

细胞和基因治疗(Cell and Gene Therapy, CGT)已成为近年来全球药物研发的热点与前沿领域,也得到了国家政策的大力支持。《“十四五”生物经济发展规划》中提到“发展基因诊疗、干细胞治疗、免疫细胞等新技术”,“围绕加快创新药上…

Spring中事务的隔离级别和传播机制

上一篇博客中讲解了关于事务的两种使用方式包括Transactional的详解。 Transactional 注解当中的三个常⻅属性: 1. rollbackFor: 异常回滚属性. 指定能够触发事务回滚的异常类型. 可以指定多个异常类型 2. Isolation: 事务的隔离级别. 默认值为 Isolation.DEFAULT 3. propagat…

[whl]树莓派armv7l文件onnx的whl所有下载地址汇总

下面onnx所有版本都是树莓派armv7l平台的whl文件,不能用于windows,macOS或者ubuntu x86_64的系统,请认准文件名及其对应python版本下载。 序号版本名称下载地址1onnx-1.16.1-cp311-cp311-linux_armv7l.whl点我下载2onnx-1.16.0-cp311-cp311-linux_armv7…

短视频矩阵系统:高效运营,解决多账号管理难题

前言 在当下短视频风靡的时代,如何高效管理和运营多个短视频账号,成为了众多运营者面临的挑战。而今,一款全新的短视频矩阵系统应运而生,它不仅融合了AI文案生成与剪辑模式等先进功能,更支持多平台授权,助…

超分辨率重建——2022冠军RLFN网络推理测试(详细图文教程)

💪 专业从事且热爱图像处理,图像处理专栏更新如下👇: 📝《图像去噪》 📝《超分辨率重建》 📝《语义分割》 📝《风格迁移》 📝《目标检测》 📝《暗光增强》 &a…

如何用Vue3打造一个炫酷的树状图

本文由ScriptEcho平台提供技术支持 项目地址:传送门 基于 Vue.js 的 Treemap 可视化组件 应用场景介绍 Treemap 可视化组件是一种强大的工具,用于以直观的方式展示分层数据。它将数据点绘制为矩形,其中每个矩形的大小与数据点的大小成正比…

阿里云平台创建设备及连接

使用阿里云平台创建项目,利用MQTT.fx软件配置相关的连接,在软件上完成消息的订阅与推送,与手机APP进行同步数据。了解MQTT相关的协议。 1.注册阿里云平台账号,完成实名注册! 618创新加速季_新迁入云享5亿算力补贴-阿里…

如何写出一份出色的论文开题报告

论文开题报告是研究生阶段一个关键的环节,它直接影响着后续论文的质量。一份好的开题报告不仅能让导师及评审专家对你的研究方向和内容有一个全面的了解,还能帮助你梳理思路,为顺利开展研究奠定基础。下面就让我们一起来看看,要如何写好一份开题报告。 开题报告的主要内容 一…

JCR一区 | Matlab实现GAF-PCNN、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断

JJCR一区 | Matlab实现GAF-PCNN、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断 目录 JJCR一区 | Matlab实现GAF-PCNN、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断分类效果格拉姆矩阵图GAF-PCNNGASF-CNNGADF-CNN 基本介绍程序设计参考资料 分类效果 格拉姆…

【网络编程开发】16.域名解析与http服务器实现原理

16.域名解析与http服务器实现原理 文章目录 16.域名解析与http服务器实现原理gethostbyname 函数HTTP的操作过程实现httphome.htmlhttp-head.txtserver.c gethostbyname 函数 原型&#xff1a; #include <netdb.h> struct hostent *gethostbyname(const char *hostname);…