guqzhou guqzhou
首页
快捷导航
  • Html 篇
  • Javascript 基础篇
  • 框架

    • Vue2
  • 前端文章

    • Css 篇
    • 微信开发
    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 小程序笔记
    • JavaScript 基础
  • nginx
  • CSS
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 面试题库

    • HTML
    • CSS
    • jQuery
    • Vue
    • 零碎
  • 面试心得

    • 杂言碎语
  • 摘抄收录

    • ☆ 励志鸡汤
    • ❀ 人间烟火
    • ☣ 万物沦丧
    • ✌ 关掉烦恼
    • ✲ 小酒馆
  • 读书笔记

    • 《小狗钱钱》
    • 《穷爸爸富爸爸》
    • 《聪明人使用方格笔记本》
关于
  • 学习
  • 面试
  • 心情杂货
  • 友情链接
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue资源
  • 主站CDN (opens new window)
  • Vercel (opens new window)
  • Netlify (opens new window)
  • Github (opens new window)
GitHub (opens new window)

guqzhou

喜欢所以去追求!
首页
快捷导航
  • Html 篇
  • Javascript 基础篇
  • 框架

    • Vue2
  • 前端文章

    • Css 篇
    • 微信开发
    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 小程序笔记
    • JavaScript 基础
  • nginx
  • CSS
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 面试题库

    • HTML
    • CSS
    • jQuery
    • Vue
    • 零碎
  • 面试心得

    • 杂言碎语
  • 摘抄收录

    • ☆ 励志鸡汤
    • ❀ 人间烟火
    • ☣ 万物沦丧
    • ✌ 关掉烦恼
    • ✲ 小酒馆
  • 读书笔记

    • 《小狗钱钱》
    • 《穷爸爸富爸爸》
    • 《聪明人使用方格笔记本》
关于
  • 学习
  • 面试
  • 心情杂货
  • 友情链接
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue资源
  • 主站CDN (opens new window)
  • Vercel (opens new window)
  • Netlify (opens new window)
  • Github (opens new window)
GitHub (opens new window)
  • vue2
  • CSS

  • Javascript基础

  • javascript进阶

  • typeScipt

  • vue2

  • vue3

    • vue3简介
    • 创建vue3工程
    • composition API
    • vue + ts之旅
    • provide与inject的用法
    • vuex的使用
    • vue3学习
    • vue3+ts 源码学习
    • watch的用法
    • watchEffect
    • v-model介绍
    • vue3-3新特性
    • vite3 + js 迁移ts过程
    • vue3自定义指令的使用
    • VueDraggable的使用
    • 前端实现单点登录
      • 前端单点登录
        • postMessage跨域和dns解析,给父级发消息
        • 子系统接收token
  • react

  • vite介绍

  • vue实战

  • pinia的使用

  • gis

  • 前端文章

  • JavaScript文章

  • Vue文章

  • 小程序开发文章

  • uni-app

  • 学习笔记

  • TaroUI的使用

  • 工具使用

  • 前端
  • vue3
guqzhou
2024-02-23
0

前端实现单点登录

# 前端单点登录

为了把多个系统内部做成单点登录,各个系统又部署在不同域名下,就变成跨域共享token,这时想到了淘宝天猫的单点登录,而淘宝天猫登录页面是通过iframe内嵌了一个淘宝登录页,在天猫登录页,实际上是走了淘宝登录页的接口,并且登录成功后cookie也是设在淘宝域名底下,在淘宝iframe中登录成功后,通过postMessage进行iframe父子窗口通讯,天猫登录页得知淘宝中已经登录成功,就会通过get请求,去请求淘宝的认证接口,此时就会带上淘宝域名下cookie中的token,认证接口认证token的有效性,并且返回token,此时天猫登录页节能拿到淘宝域名下的token,实现token共享

# postMessage跨域和dns解析,给父级发消息

window.parent.postMessage({
    token: localStorage.getItem('token')
}, '*')
1
2
3

# 子系统接收token

window.addEventListener('message', (e) => {
    if(e.data && e.data.token) {
        localStorage.setItem('token',e.data.token)
    } else {
        let redirectUrl = window.location.href
        window.location.href = `http://www.baidu.com/login?redirectUrl=${redirectUrl}`
    }
})
let iframe = document.createElement('iframe')
iframe.width = 0
iframe.height = 0
iframe.style.display = none
document.body.appendChild(iframe)
iframe.src = 'http://localhost:8080'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
上次更新: 2024/04/26, 0:04:00
VueDraggable的使用
context的使用

← VueDraggable的使用 context的使用 →

最近更新
01
常用IP工具
02-05
02
GitHub 自动化部署
02-04
03
vue3-3新特性
02-04
更多文章>
Theme by Vdoing | Copyright © 2021-2026 guqzhou | 萌ICP备20238188号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式