前端单点登录 iframe

前端单点登录 iframe+LocalStorage

当有一个集成的登录页系统(如无集成的登录系统时也可多个系统中有系统登录了,向其他系统保存token),当登录成功时,可向多个系统储存token,这种方法需要保证多个系统中使用的是LocalStorage保存token,并且做好使用token判断是否登录以及其他一切判断。

这种方法即可不会被跨域限制,也实现多个系统只需一次登录

系统A:
在这里插入图片描述
在这里插入图片描述
代码块
vue文件

<script setup>
const btn = () => {
  const iframe = document.createElement('iframe')
  iframe.setAttribute(
    'style',
    'position:absolute;width:0px;height:0px;left:-500px;top:-500px;'
  )
  iframe.src = 'http://172.22.130.82:3001'
  document.body.append(iframe)
  setTimeout(function () {
	  iframe.contentWindow.postMessage('123123', "http://172.22.130.82:3001");
	}, 1000);

  setTimeout(function () {
    iframe.remove();
  }, 3000);
}
</script>
<template>
  <button @click="btn">点击</button>
</template>

vite.config.js

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue()],
  server: {
    port: 3000,
    host: "172.22.130.82",
    open: true
  }
})

系统B:
在这里插入图片描述
在这里插入图片描述
代码块
vue文件

<script setup>
window.onmessage = function (ev) {
  if (ev.origin === 'http://172.22.130.82:3000') {
    localStorage.setItem('token', ev.data)
  }
}
</script>

<template>
</template>

vite.config.js

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue()],
  server: {
    port: 3001,
    host: "172.22.130.82",
    open: true
  }
})

效果:

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值