vue中使用postMessage

876 阅读1分钟

平时做项目都是同一个项目用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);  
    }  
  }); 
 },