用浏览器打开A和B两个网站,比如在A网站登陆账号,然后刷新B网站的网页,发现也登录上了。这是什么原理?

92 阅读1分钟

一、实现原理: token验证

二、技术背景:vue+vue-router+token+js+cookie

三、具体步骤:

  1. A网站-通过路由进行跳转,将token设置成query参数
  2. B网站-在全局路由组件router.beforeEach中拦截
  3. B网站-通过location.search获取到url
  4. B网站-对url进行slice()和substring(),获取到token
  5. B网站-将token设置到B网站的token中

四、关键代码:

A网站:  
open() {
   let routeUrl = this.$router.resolve({
		path: process.env.VUE_APP_PLATFORM_API,
		query: { token: getToken() },
   });
   window.open(routeUrl.href.slice(11), "_blank");
  },

B网站:
 if (!!searchUrl && (searchUrl.substring(1, 6) === 'token')) {
    Cookies.set(TokenKey, searchUrl.slice(7))
    location.search = ''
  }