前端面试题7(单点登录)

如何实现单点登录

在这里插入图片描述
单点登录(Single Sign-On,简称SSO)是一种允许用户在多个应用系统中只需登录一次,就可以访问所有相互信任的应用系统的认证技术。实现前端单点登录主要依赖于后端的支持和一些特定的协议,如OAuth、OpenID Connect等。下面是一个基于Cookie和Session的简单前端实现思路,以及如何与后端交互的说明。请注意,这只是一个简化的示例,并未涵盖所有安全考虑。

前端实现步骤

  1. 登录验证:
    用户在登录页面输入用户名和密码,前端将这些凭据通过HTTPS发送到后端认证服务。
// 假设使用fetch API发送登录请求
async function login(username, password) {const response = await fetch('/api/login', {method: 'POST',headers: {'Content-Type': 'application/json',},body: JSON.stringify({ username, password }),});if (response.ok) {// 登录成功,重定向到首页或其他页面window.location.href = '/home';} else {// 处理错误情况}
}
  1. 设置Token或Cookie:
    后端验证成功后,会返回一个Token(JWT常见)或者设置一个认证Cookie(包含用户信息或Token),前端需要保存这个Token或确保浏览器接收了这个Cookie。

  2. 自动登录检查:
    在其他需要登录状态的页面,前端首先检查是否有有效的Token(通常存储在LocalStorage或Cookie中)或通过API请求检查Session状态。

function checkAuth() {const token = localStorage.getItem('authToken') || getCookie('sessionToken');if (token) {// Token存在,认为已登录return true;} else {// 未找到Token,重定向到登录页window.location.href = '/login';return false;}
}
  1. 跨域资源共享(CORS):
    如果前端和后端部署在不同的域名下,需要处理CORS问题,确保Cookie能够正确传递。

后端实现要点

  • 统一认证服务: 需要有一个中心认证服务器,负责验证用户凭据并发放Token或设置Session。
  • Token或Session管理: 生成的Token应具有时效性,并且需要有效管理Session,包括创建、验证和过期处理。
  • 跨域策略: 后端需要配置CORS策略,允许特定源的前端应用访问认证相关的API,并允许Cookie随请求发送。
  • 资源保护: 所有需要鉴权的API都应该检查请求中携带的Token或Session的有效性。

安全注意事项

  • 使用HTTPS来加密传输数据,防止中间人攻击。
  • 对Token进行适当的安全设计,比如使用JWT时应包含签发时间、过期时间,并使用密钥签名。
  • Cookie应设置HttpOnly属性以防止XSS攻击,并根据需要设置SameSite属性来限制跨站请求。

以上是前端参与单点登录实现的一个基本框架,实际应用中还需结合具体业务场景和安全要求进行详细设计。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch 实现 Word、PDF,TXT 文件的全文内容提取与检索

文章目录 一、安装软件:1.通过docker安装好Es、kibana安装kibana:2.安装原文检索与分词插件:之后我们可以通过doc命令查看下载的镜像以及运行的状态:二、创建管道pipeline名称为attachment二、创建索引映射:用于存放上传文件的信息三、SpringBoot整合对于原文检索1、导入依赖…

论文学习——基于小生境预测策略的动态多目标进化算法

论文题目:A dynamic multi-objective evolutionary algorithm based on Niche prediction strategy 基于决策变量分类的动态多目标优化算法(Jinhua Zheng a,b, Bo Zhang a,b,∗, Juan Zou a,b, Shengxiang Yang a,d, Yaru Hu)Applied Soft C…

昇思第10天

RNN实现情感分类 二分类问题:Positive和Negative两类 步骤: 1.加载IMDB数据集 2.加载预训练词向量:预训练词向量是对输入单词的数值化表示,通过nn.Embedding层,采用查表的方式,输入单词对应词表中的index,…

深度学习基础以及vgg16讲解

一 什么是卷积 上图所示,为图像边缘提取得一个卷积过程,卷积核就是计算当前像素左右两边得像素差,这个差值越大代表越可能是图像边缘。因此当实现其它功能时,只需要调整卷积核得参数即可。深度学习的训练其实就是在确定这些参数。…

惕佫酰假托品合酶的发现-文献精读28

Discovering a mitochondrion-localized BAHD acyltransferase involved in calystegine biosynthesis and engineering the production of 3β-tigloyloxytropane 发现一个定位于线粒体的BAHD酰基转移酶,参与打碗花精生物合成,并工程化生产惕佫酰假托品…

C # @逐字字符串

逐字字符串 代码 namespace TestAppConsole {class program{static void Main(string[] args){int a 0;int b 9;string c "2ui923i9023";//Console.Write(sizeof(int));string d "\t8282jjksk";string e "\t8282jjksk";Console.WriteLine(…

Tkinter布局助手

免费的功能基本可以满足快速开发布局, https://pytk.net/ iamxcd/tkinter-helper: 为tkinter打造的可视化拖拽布局界面设计小工具 (github.com) 作者也把项目开源了,有兴趣可以玩玩

每周算法:无向图的双连通分量

题目链接 冗余路径, Redundant Paths G 题目描述 为了从 F F F 个草场中的一个走到另一个,奶牛们有时不得不路过一些她们讨厌的可怕的树。 奶牛们已经厌倦了被迫走某一条路,所以她们想建一些新路,使每一对草场之间都会至少有两条相互分离…

对BSV区块链的曼达拉网络通俗易懂的解释

​​发表时间:2023年6月15日 BSV区块链正在引入“曼达拉”升级,使BSV区块链网络的拓扑结构能够适配Teranode,适配这个可以大幅扩容的节点软件。BSV区块链上曼达拉网络的概念并不会改变整个系统的核心规则;相反,它能够引…

I2C接口+高度集成的电源管理芯片(PMIC)-iML1942

电源管理芯片 - iML1942是一个高度集成的电源管理IC为TFT液晶面板。它具有完整的I2C接口来编程各种参数。该设备包括一个针对AVDD的电流模式升压调节器,一个针对VBK1的同步升压转换器。VGL可选的反相转换器或负电荷泵调节器,VSS1负线性调节器&#xff0c…

细说MCU的ADC模块单通道连续采样的实现方法

目录 一、工程依赖的硬件及背景 二、设计目的 三、建立工程 1、配置GPIO 2、选择时钟源和Debug 3、配置ADC 4、配置系统时钟和ADC时钟 5、配置TIM3 6、配置串口 四、代码修改 1、重定义TIM3中断回调函数 2、启动ADC及重写其回调函数 3、定义用于存储转换结果的数…

Redis---9---集群(cluster)

将新增的6387节点(空槽号)作为master节点加入原集群 Redis—9—集群(cluster) 是什么 定义 ​ 由于数据量过大,单个Master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复…

苹果电脑能玩赛博朋克2077吗 如何在mac上运行赛博朋克2077 crossover能玩什么游戏

各位喜欢赛博朋克风的一定不能错过《赛博朋克2077》。那么《赛博朋克2077》是一款什么样的游戏?《赛博朋克2077》在苹果电脑上可以运行吗?一起来看看介绍吧。 一、《赛博朋克2077》是一款什么样的游戏? 《赛博朋克2077》是一款由CD Projekt …

重温react-13(嵌套路由和重定向等)

重定向和404 import React from react; import { Routes, Route, Link,NavLink ,Navigate} from react-router-dom; import Home from ./Home/Home import About from ./About/About import News from ./News/News import NotFound from ./NotFound/NotFound; export default …

pytest-yaml-sanmu(六):YAML数据驱动测试

如果说 pytest 中哪些标记使用得最多,那无疑是 parametrize 了, 它为用例实现了参数化测试的能力,进而实现了数据驱动测试的能力。 1. 使用标记 parametrize 的使用需要提高两个内容: 参数名 参数值 pytest 在执行用例时&…

eBPF 指令宏

linux 6.9.7 指令宏 /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ /* eBPF instruction mini library */ #ifndef __BPF_INSN_H #define __BPF_INSN_Hstruct bpf_insn;/* ALU ops on registers, bpf_add|sub|...: dst_reg src_reg */ // BPF_ALU64_REG&am…

Drools开源业务规则引擎(三)- 事件模型(Event Model)

文章目录 Drools开源业务规则引擎(三)- 事件模型(Event Model)1.org.kie.api.event2.RuleRuntimeEventManager3.RuleRuntimeEventListener接口说明示例规则文件规则执行日志输出 4.AgentaEventListener接口说明示例监听器实现类My…

Linux——学习Linux基本工具安装教程视频链接

本篇文章就是记录一下学习Linux需要用到的基本工具的视频教程链接,方便以后查看 VMware15.5安装 安装视频教程:VMware15.5安装教程 centos7.6安装(这个视频教程真的很nice) 视频教程:centos7.6 虚拟机克隆、快照、…

医疗器械FDA | FDA如何对医疗器械网络安全认证进行审查?

FDA医械网络安全文件出具​https://link.zhihu.com/?targethttps%3A//www.wanyun.cn/Support%3Fshare%3D24315_ea8a0e47-b38d-4cd6-8ed1-9e7711a8ad5e FDA对医疗器械的网络安全认证进行审查时,主要关注以下几个方面,以确保医疗器械在网络环境中的安全性…

7 系列 FPGA 引脚及封装(参考ug475)

目录 I/O BankPins引脚定义I/O and Multi-Function PinsPower Supply PinsDedicated XADC PinsTransceiver PinsDedicated Configuration PinsTemperature Sensor Pins Device 视图整个 FPGAIOBILOGIC,OLOGIC,IDELAY,ODELAYBUFIO,BUFR,IDELAYCTRLBUFMRCEBRAM,DSPIBUFDS_GTE2CLB…