平时做项目都是同一个项目用params传参,最近产品提出单点登录需求,需求在A项目登录,然后A项目点击打开新窗口打开B项目,并且用户信息共用,实现登录一次,多端可免登录!
解决方法1:URL带参,产品嫌地址栏可以看到参数不安全!
解决方案2:localStorage缓存,也嫌弃控制台可以看见,不安全!
解决方案3:postMessage,然后就百度到了postMessage传参,不同端口,跨项目亲测可用,别人也不会知道你的key,代码如下:
1、发送项目页面代码
send() {
var data = {
code: "123456",
type: "1",
key: "2b5841d41a64b982b7a0a674b5d78c41",
};
var popup = window.open("http://localhost:8080");
window.setTimeout(function () {
popup.postMessage(data, "http://localhost:8080");
}, 1000);
},
2、接收项目页面代码
mounted() {
window.addEventListener("message", (e) => {
if (e.data.type != "webpackOk") {
console.log(e.data);
}
});
},