“前端单点登录(SSO, Single Sign-On)”是指在多个系统之间共享用户登录状态,使用户只需登录一次,就可以在多个子系统中使用同一身份访问资源,无需重复登录。

以下是一个典型的前端单点登录方案的介绍和实现思路:


🔧 一、前端单点登录的核心流程

以一个公司内多个前端系统为例(如:系统 A、系统 B),通过统一的登录中心进行身份认证。

🌐 基础参与者:

  • 登录认证中心(SSO Server)

  • 子系统 A/B/C(SSO Client)

  • 浏览器(前端运行环境)

🔁 登录流程简要图解:

[用户访问子系统 A]↓
[未登录 → 重定向到 SSO 登录中心]↓
[SSO 登录成功 → 返回带 Token 的跳转链接给子系统 A]↓
[子系统 A 用 Token 向 SSO 验证身份]↓
[身份验证成功 → 创建子系统 A 的本地会话]↓
[访问子系统 B → 检查登录状态 → 同样走一遍验证流程 → 免登录]

🛠️ 二、前端常见实现方案

✅ 1. 基于 Cookie 的方式(适合统一域名)

同一主域(如 a.example.comb.example.com)可共享顶级域名 Cookie。

  • 设置 SSO Server 设置 Set-Cookie: token=xxx; Domain=.example.com; Path=/

  • 子系统读取 Cookie 并根据 token 验证身份

优点:实现简单,不需要 Token 手动传输
缺点:只能适用于同一主域,存在跨域限制


✅ 2. 基于 Token(如 JWT)的方式(适合不同域名)

  • SSO 登录后生成 access_token(JWT 或 sessionId)

  • 重定向到客户端系统并携带 Token(如:https://system-a.com?token=abc123

  • 客户端拿 token 请求认证接口,验证并存入 localStorage / sessionStorage

  • 后续所有请求都带上这个 token(通常放到 Authorization 头)

示例前端逻辑

// 获取 URL 中的 token
const urlParams = new URLSearchParams(window.location.search);
const token = urlParams.get('token');if (token) {localStorage.setItem('access_token', token);// 可调用验证接口确认有效性
} else {// 没有 token,跳转到 SSO 登录页window.location.href = `https://sso.example.com/login?redirect=${encodeURIComponent(location.href)}`;
}

🧠 三、SSO 实现注意点

💡 登录中心要支持:

  • 登录接口,支持用户输入账号密码

  • 校验 Token 的接口(给客户端调用验证用)

  • Token 签发(JWT 或 sessionId)

  • Token 刷新机制(可选)

🔒 安全注意:

  • Token 要有时效(过期时间)

  • HTTPS 传输

  • Token 不应泄露在 URL 中太久(可用 history.replaceState 清除)


🌍 四、前端开发建议

项目建议
登录状态缓存localStorage / Cookie / memory
Token 校验失败自动跳转到 SSO 登录页
多系统切换使用 iframe 或 postMessage 通知同步登录
登出同步通知所有系统清除登录状态(可轮询或广播)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/912333.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/912333.shtml
英文地址,请注明出处:http://en.pswp.cn/news/912333.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DiNA:扩张邻域注意力 Transformer

摘要 Transformer 正迅速成为跨模态、跨领域和跨任务中应用最广泛的深度学习架构之一。在计算机视觉领域,除了持续发展的纯 transformer 架构,分层 transformer 也因其优越的性能和在现有框架中易于集成而受到广泛关注。这类模型通常采用局部化的注意力…

对于“随机种子”的作用的理解

深度学习系统的两大组成部分 确定性部分(无法通过种子改变): ✅ 网络结构:层数、神经元数量、连接方式 ✅ 学习率:如您所说,这是开发者明确设置的固定值或调度策略 ✅ 损失函数:MSE、CrossEnt…

C# 委托(调用带引用参数的委托)

调用带引用参数的委托 如果委托有引用参数,参数值会根据调用列表中的一个或多个方法的返回值而改变。 在调用委托列表中的下一个方法时,参数的新值(不是初始值)会传给下一个方法。例如, 如下代码调用了具有引用参数的…

Cisco FMC events无法加载并且cpu high故障- Cisco bug

FMC故障 日志无法加载,并且CPU high 95% 经确认是bug问题,需要重置1个monetdb的进程 https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwe47671 https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwi64429 2.1 备份FMC配置 2.2 重置进程 大约为2…

HarmonyOS 公共事件机制介绍以及多进程之间的通信实现(9000字详解)

HarmonyOS 公共事件机制介绍以及多进程之间的通信 CES(Common Event Service,公共事件服务)为应用程序提供订阅、发布、退订公共事件的能力 1. 公共事件的介绍 1.1.1公共事件的分类:公共事件从系统的角度可以分为系统公共事件和自定义公共事件 系统公共事件&#x…

华为云Flexus+DeepSeek征文|快速搭建Dify LLM应用开发平台教程

【摘要】本文介绍基于华为云Flexus X实例快速部署Dify-LLM应用开发平台的解决方案。通过创建云服务器(2核4G配置)、弹性公网IP(300Mbps带宽)及安全组,实现平台私有化部署。方案提供两种计费模式(按需197元/…

【blender】使用bpy对一个obj的不同mesh进行不同的材质贴图(涉及对bmesh的操作)

BMesh 简介 BMesh 是 Blender 中用于表示和操作网格数据的底层数据结构系统,它是传统网格数据结构的高级替代品。 主要特点 灵活拓扑支持: 支持 n-gons(任意边数的多边形),而不仅仅是三角形和四边形允许边和顶点不属…

如何通过nvm切换本地node环境详情教程(已装过node.js更改成nvm)

针对系统已装过node环境或者第一次安装nvm环境如何切换nvm 文章目录 系列文章目录前言一、删除原有node环境二、使用步骤 1.下载nvm软件2.安装node不同版本3.使用node版本4.配置包文件、安装包、配置包环境 总结 一、删除原有node环境 1、删除之前安装的node包,以及…

概率论符号和公式整理

本文是由AI生成后,经作者优化整理的文章。个人总结,仅限参考! 以下整理了概率论中的常用符号和公式表格,覆盖基础知识、关键定理和常用分布: 一、基础集合与事件符号 符号名称含义/公式说明 S S S样本空间所有可能结…

SpringSecurity是什么?

Spring Security是Spring生态中的安全框架,用于管理Web应用的认证与权限控制,支持多种登录方式并集成防护机制,可防范CSRF/XSS等攻击,保障企业级系统的安全性。 一、核心功能与定位 身份认证(Authentication&#xff…

nt!IoSynchronousPageWrite函数分析之atapi!IdeReadWrite----非常重要

第一部分:预分析 1: kd> g Breakpoint 7 hit atapi!IdeReadWrite: f729cb2a 55 push ebp 1: kd> kc # 00 atapi!IdeReadWrite 01 atapi!IdeSendCommand 02 atapi!AtapiStartIo 03 atapi!IdeStartIoSynchronized 04 nt!KeSynchronizeExecuti…

软考系统架构设计师经验总结

本文目的 对参加的2025年上半年系统架构设计师考试进行总结提供一些备考思路给未来参加系统架构设计师的同学 个人背景 工作背景 本科计算机与技术(学过一些计算机基础课程),15年毕业后从事过b端(人群画像、营销、用户增长、硬…

Tailwind CSS工作原理

文章目录 前言1. 指令解析与 AST 操作🚩 **核心处理流程**🧩 **具体流程说明** 2. **配置驱动的样式生成**3. **JIT 模式(Just-In-Time)的核心逻辑**4. **插件与自定义扩展**5. **与 PostCSS 管道的协同**6. **优化与 Tree Shakin…

web网页开发,在线%旅游景点管理%系统demo,基于Idea,vscode,html,css,vue,java,maven,springboot,mysql

经验心得 两业务单,都是业务逻辑开发,基本crud,什么是前后端,怎么分离前后端,前后端怎么通讯的,是以什么格式进行通讯这些咱们都需要掌握,后面剩下就是前后端不同层如何优化。管理系统很常见了其…

面试150 长度最小的子数组

思路 联想到滑动窗口法。左窗口的值为0,遍历数组对数组求和,当数组的和大于等于target的时候,窗口要收缩,计算子数组的长度,并及时更新最小的长度,左窗口右移。 class Solution:def minSubArrayLen(self,…

Python字典的查询操作

一、前言 在 Python 中,字典(dict) 是一种非常常用的数据结构,以键值对(Key-Value Pair)形式存储数据,支持快速查找、插入和删除操作。 本文将系统性地介绍 Python 字典中常见的查询操作方法&…

pyhton基础【18】面向对象基础一

目录 一.面向对象 二.面向对象概述 三.类与对象 一.面向对象 Python中的面向对象编程OOP是一种编程范式,它使用对象来设计软件。对象是具有属性(称为属性)和可以执行的操作(称为方法)的数据结构。 基础概念 类:class 类是创建对象的蓝图或模板。它…

Requests源码分析:面试考察角度自验(初级)

简单描述执行流程 Q:能简单描述一下发送一个requests.get(url)请求时,在requests库内部的主要执行流程吗?(从调用get方法到收到响应) 入口委托: get() 方法内部调用 requests.request(GET, url)。Session 接管: request() 方法会获取或隐式创建一个 Session 对象,并调用…

鸿蒙5:条件-循环-列表渲染

注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…

浅谈AI大模型-MCP

MCP简介 MCP(Model Context Protocol,模型上下文协议 ),24年11月初的时候Anthropic发了一篇技术博客,推出了他们的模型上下文协议MCP,介绍了一种规范:应用如何为LLM提供上下文。官网称MCP为AI应…