前端登录鉴权详解

1.cookie-session

1. cookie

cookie简单来说就是浏览器客户端在请求时会携带的一个字段数据,常用与保存当前用户状态并在请求时携带给服务端验证。

2. session

session简单来说就是服务单对于每一个用户生成一个用户会话标识session /session id,并返回给客户端,客户端在每次请求时携带这个会话标识就可以判断当前用户的会话状态。

3. 鉴权原理

  1. 初次登录时,服务端将当前用户的登录状态生成一个session/session id
  2. 服务端将session id(sid)) 设置到cookie 中随请求返回。
  3. 下次请求时浏览器自动携带当前域名下的cookie,服务端获取到sid之后,根据sid的信息来匹配上对应的session,然后判断该请求是否合法。

4. 缺点

  1. 不安全, sid保存到cookie容易被篡改
  2. 对移动端支持不优化,仅可在浏览器web应用中使用
  3. 依赖浏览器请求头携带cookie,如果浏览器禁用cookie会造成该方案无法使用

2.token

1.token

token指的是由服务端生成的一个专门用于判断用户身份的令牌,客户端可以携带这个令牌来获取数据。这个token一般来说会存在时效性,过期即作废,需要重新申请。因此这也衍生出了两种不同的token。

2.token的分类

  1. Access token

用户校验用户信息的token,在每次请求时发送给服务器

  1. Refresh token

用户重新火球Access token,在Access token过期,服务器返回401时发送给服务器,服务器根据Refresh toekn的有效性重新签发一份新的Access toekn返回给浏览器。

3.鉴权原理

  1. 初次登录,服务器生成一份toekn并返回给客户端
  2. 客户端收到token后将其保存到浏览器本地,一般为localStorage
  3. 后续请求时客户端在请求头中携带token,一般为Authoration 字段
  4. 服务端判断token是否有效,有效则正常请求,无效返回401

以下阶段为使用Refresh token 场景下

  1. 如果使用Refresh toekn方案,此时客户端接受到401 后,会携带Refresh toen再次请求服务器
  2. 服务器收到Refresh toekn后,根据其有效性自动重新签发一份token并返回
  3. 浏览器接收到新token之后覆盖本地token并重新发发送请求

Refresh token方案下, Refresh toekn是在初次登录是和Access token一起生成并返回给客户端客户端

3.JWT

1.jwt(json web token)

jwt本质上就是token鉴权的一种实现方式,通过服务端临时深成一个编码的toekn字符串来返回给客户端。

2.组成

jwt主要有三部分组成,分别是Header,Payload,Signature(签名)

jwt是一段很长的字符串,有点号(.)分割为以上的三部分

  • Header一般包含token的类型,例如是JWT;加密使用的算法
  • Payload一般是保存用户的一部分信息以及一些官方字段,包括iss(签发人),exp(过期时间),nbf(生效时间)等等。
  • Sginature 一般是一个签名,这个签名是将一个密钥通过Header里面的加密算法加密过后的字符串。密钥保存再当前服务端。

3.鉴权原理和token一样

4.单点登录(SSO)

1.单点登录介绍

所谓单点登录,指的是在登录了某一个系统之后,再去使用其子系统或相关系统是,可以自动获取到用户信息,不需要重复登录的一种技术。单点登录主要分为两种类型,即同域名和不同域名

2.同域名单点登录

1.前提条件

  • 两个系统均使用cookie携带用户信息(可以是cookie-session ,也可以是token)
  • 两个系统的一级或者二级域名相同(同一个主域名)

2.鉴权原理

  1. 客户端登录系统1后,将其对应的cookie信息保存下来,并设置cookie的Domain字段为主域名
  2. 客户端访问系统2时,在发送请求时会自动携带上与当前系统主域名相同的cookie信息到服务端请求数据,此时服务端就可以获取到用户信息了。

3.不同域名下的单点登录

1.CAS 中央授权系统

用于判断用户登录状态并为需要的系统签发用户登录凭证

2.鉴权原理

  1. 用户当访问系统1时,发现用户未登录,调用CAS的登录登录模块并跳转至CAs的登录界面
  2. 用户在CAS上登陆之后,服务端生成一份TGC存放到session中,并生成一份ST授权信息,携带ST重定向系统1的页面。将TGC写入到当前中央授权系统的Domain下。
  3. 系统1在加载后获取到ST,拿着ST向CAS校验授权有效性,若授权有效则系统1将ST作为凭证参与后续请求会话。
  4. 此时再去访问系统2,首先判断用户未登录跳转至CAS,携带Domain中的TGC发送请求判断登陆状态
  5. 判断已登录后跳转至系统2的地址并附上ST凭证

5.OAuth 2.0(三方登录)

1.OAuth

OAuth是一个开放的标注,允许第三方网站访问提供商服务并获取对应的用户信息而无需再忍第三方网站单独登录

2.授权码模式

  1. 客户端点击第三方登录,发送请求
  2. 服务端收到请求之后,会重定向到授权器
  3. 授权服务器返回授权网站,判断用户是否登录,登陆之后会询问是否为这个网站授权
  4. 用户同意后,会跳转会原来的网站地址,并且携带一个授权码
  5. 服务端拿到授权码之后,通过授权码向授权服务器发送请求获取token
  6. 授权服务器将对应的token信息发送至当前服务端,服务端会把token返回给浏览器,在后续请求时都会携带

3.隐藏式模式

  1. 客户端点击第三方登录直接重定向到授权页面
  2. 授权成功后,在重定向到前端页面时,直接携带一个token挑战
  3. 跳转成功后将token保存下来
  4. 每次请求用户信息是直接携带token向授权服务器发送请求

6.扫码登录

1.扫码登录

扫码登录一般是使用一些移动端设备,为pc端授权登录的场景

2.登录原理

待扫码阶段

  1. pc端点击扫码登陆之后,向服务端请求一个获取二维码的请求
  2. 服务端接收请求后,生成一个uuid作为二维码id并将uuid和pc设备信息关联起来存储到redis中,然后返回给pc端。
  3. pc端接收到二维码id之后,通过canvas价格二维码id渲染二维码,等待移动端扫码。并且开始轮询查询二维码状态,发现二维码过期之后会提示。

已扫码待确认阶段

  1. 使用移动端设备扫码,扫码后会解析二维码图像并生成对应的id
  2. 移动端将对应的id发送给服务端,并查询到pc登录设备信息返回。并生成一个临时token用于移动端确认
  3. 移动端弹出确认界面,并展示pc登录的状态,比如登录时间,地点等等

已确认阶段

  1. 移动端确认登录,携带上一步获取的临时token发送到服务端
  2. 服务端验证token有效性,通过验证后签发一个正式的token返回给PC端。
  3. Pc端获取到token信息后,二维码展示为已确认状态,并跳转至使用页面完成登录。

7.一键登录

1.一键登录

一键登录指的是客户端直接从用户系统中获取到对应的手机号,直接使用该手机号完成登录。一般适用于原生应用或小程序应用

2.登录原理

  1. 用户点击一键登录
  2. 通过运营商SDK调用,唤起配置页面,SDK会先发送手机号掩码到运营商服务器,请求成功后跳转至确认页面,显示出手机掩码及运营商协议等供用户确认。
  3. 同意授权登录后,SDK会请求本次取号的token,成功后将token返回给客户端
  4. 客户端将取号token发送到服务器,服务器携带携带取号token调用运营商的一键登录接口获取用户手机号,服务端使用手机号完成登录流程,生成token返回给客户端。

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

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

相关文章

从零实现 LLM(上):原理讲透 + 最小可运行 GPT

引言 为什么要学习 LLM? 当你和 ChatGPT 对话时,它不仅能回答你的问题,还能续写故事、记住上下文,甚至调整风格。你可能会想:它是怎么做到的? 答案就是:大语言模型(Large Languag…

浪潮科技Java开发面试题及参考答案(120道题-下)

如何给 MySQL 表添加索引?添加索引的语法是什么?添加索引时需要考虑哪些因素(如字段类型、查询频率、索引选择性)? 给 MySQL 表添加索引需根据业务需求选择合适的索引类型,不同类型的索引语法不同,同时需综合评估字段特性、查询模式等因素,避免无效或过度索引。 一、…

大数据毕业设计选题推荐-基于大数据的宫颈癌风险因素分析与可视化系统-Spark-Hadoop-Bigdata

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

【PyTorch实战:Tensor变形】5、 PyTorch Tensor指南:从基础操作到Autograd与GPU加速实战

一、Tensor核心概念解析 1.1 什么是Tensor? Tensor是PyTorch中最基本的数据结构,也是深度学习框架的核心计算单元。我们可以将Tensor理解为多维数组的统一表示,它在PyTorch中的地位相当于NumPy中的ndarray,但具有两个关键增强特性:GPU加速支持和自动求导能力。 1.2 为…

2025年我国具身智能产业链全景分析

一、具身智能产业概述与定义 1.1 具身智能的基本概念与内涵 具身智能(Embodied Intelligence)是指通过物理实体与环境进行交互的智能系统,其核心在于将感知、决策和执行紧密结合,使智能体能够在动态环境中自主感知、学习和执行任务…

VMWare上搭建大数据集群

文章目录1. 采用软件较新版本2. 准备三台虚拟机3. 搭建Hadoop集群3.1 在主节点上配置Hadoop3.1.1 编辑映射文件3.1.2 配置免密登录3.1.3 配置JDK3.1.4 配置Hadoop3.2 从主节点分发到从节点3.3 格式化名称节点3.4 启动Hadoop集群3.5 使用Hadoop WebUI3.6 运行MR应用:…

小迪自用web笔记29

PHP刷新是点击刷新之后原来的图片替换掉,换成新的图片。把inhoneJPG给替换掉如果这个图片是由用户可自定义输入的话,可xss漏洞应用。因为这段代码本质逻辑是点击刷新之后。就执行update方法中的代码,而这个方法中存储的是。截取IMG&#xff0…

WPS--专业pj版

下载 下载链接 解压后 安装 默认安装 激活 输入解压后文件中的激活码

Android Framework智能座舱面试题

目录 1.谈一谈你对binder机制的理解?它为什么是Android中最重要的IPC通信方式?与其他IPC(Socket、共享内存)通信方式相比有哪些优势? 2.如果你需要新提供的车载硬件(比如:一个座椅震动马达)提供系统级别支持应该怎么做? 3.你了解Android与QNX共存方案的实现方式吗?他们…

[CISCN2019 华北赛区 Day1 Web1]Dropbox

TRY 首先上传和删除文件抓包,可以发现upload.php和delete.php,只允许上传gif png jpg后缀的文件。但是上传的文件并没有办法访问,不过可以下载,抓包发现下载的时候请求体是文件名,尝试能不能通过路径穿越获取源码&…

网站管理后台

这里套用的模板为 枫雨在线 在宝塔面板左侧选择菜单栏文件 在根目录下找到www文件夹,点击进入wwwroot文件夹,随后能看到域名文件夹,里面有一下初始内容,可以全部删掉,留下 .user.ini 文件 点击上传,将…

一款免费易用且打造的全功能媒体播放器

zyfun[zyplayer]是一款免费易用且打造的全功能媒体播放器, 致力于提供流畅、高效的跨平台娱乐体验。 注意:播放源请自行查询,或者联系博主。 下载:软件下载 在线体验可暂时使用:https://tv.snowytime.cn 密码为123456 🎉 功能亮点…

【AI产品思路】AI 原型设计工具横评:产品经理视角下的 v0、Bolt 与 Lovable

本文原创作者:姚瑞南 AI-agent 大模型运营专家/音乐人/野生穿搭model,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。&#…

计算机视觉(九):图像轮廓

在计算机视觉(Computer Vision, CV)中,图像轮廓(Image Contour)是图像中物体边界的重要表现形式。它不仅能描述物体的形状特征,还能为目标识别、目标检测、图像分割、场景理解、三维重建等任务提供重要依据…

ThinkPHP 6框架常见错误:htmlentities()函数参数类型问题解决

在ThinkPHP 6框架中,htmlentities() 函数是一个常用的PHP函数,用于将字符转换为HTML实体。这个函数通常在输出内容到浏览器时使用,以防止跨站脚本(XSS)攻击。然而,在使用过程中可能会遇到参数类型问题。错误…

网络通信 IO 模型学习总结基础强化

网络通信概念网络通信因为要处理复杂的物理信号,错误处理等,所以采用了分层设计。为什么要采用分层设计?1. 每层可以独立开发,测试和替换;2. 发生问题也可以快速定位到具体层次;3. 协议标准化,不…

【ComfyUI】深度 ControlNet 深度信息引导生成

今天给大家演示一个结合 ControlNet 深度信息的 ComfyUI 建筑可视化工作流。整个流程通过引入建筑专用的权重模型和深度控制网络,使得生成的建筑图像不仅具备高质量和超写实的细节,还能精确遵循输入图片的结构特征。在这个案例中,模型加载、文…

Python数据可视化科技图表绘制系列教程(六)

目录 散点图1 散点图2 添加线性回归线的散点图 自定义点形状的散点图 不同样式的散点图 抖动散点图 边际图 边缘为直方图的边际图 边缘为箱线图的边际图 曼哈顿图 【声明】:未经版权人书面许可,任何单位或个人不得以任何形式复制、发行、出租、…

spring AI 的简单使用

1. 引入 Spring 官⽅推出的⾸个稳定版⼈⼯智能(AI)集成框架. 旨在帮助 Java/Spring 开发者更便捷地在企业级应⽤中集成 AI 能⼒ (如⼤语⾔模型、机器学习、向量数据库、图像⽣成等)。 它主要提供了以下功能: • ⽀持主要的AI模型提供商, ⽐如 Anthropic、OpenAI、M…

图像去雾:从暗通道先验到可学习融合——一份可跑的 PyTorch 教程

一、为什么“去雾”依然是好课题? 真实需求大:手机拍照、自动驾驶、遥感、监控都要在恶劣天气下成像。 数据集相对干净:与通用目标检测相比,去雾只有“有雾/无雾”一对图像,标注成本低。 传统与深度并存:…