10 分钟带你了解鉴权那些事

article/2025/9/19 7:22:01

前言:

  1. 鉴权是自动化测试路上的拦路虎,相信大部分同学都深有体会,今天我们就讲一讲这个鉴权到底是怎么回事。

一、什么是鉴权,为什么要鉴权

  1. 鉴权:是指是指验证用户是否拥有访问系统的权利。
  2. 为什么要鉴权:对用户进行鉴权,防止非法用户占用网络资源,非法用户接入网络,被骗取关键信息。
  3. 本次只讲目前企业常用 session+cookie、token 鉴权

二。 鉴权方式

  1. HTTP Basic Authentication
  2. OAuth(开发授权)
  3. session+cookie
  4. token
  1. 鉴权流程

image.png

  1. 鉴权过程详解

    2.1、用户注册的时候,客户端提交用户名和密码,服务端会存储用户名和密码,为了防止被脱库,密码存储一般会进行加密存储,比如 md5、rsa 加密等待。
    2.2、注册完成后,用户发起登陆,客户端提交用户名和密码,服务端会对用户提交的数据进行校验,用户名和密码正确,此时服务端会根据用户信息(用户 id,用户名,user_agent)等创建一个 session,并存储在数据库中(一般是存储在 Redis 中),保存好之后,服务端会将这个 session 通过响应头的 Set-cookie 字段返回给客户端。
    2.3、客户端收到服务端的响应,浏览器会自动将响应头 Set-cookie 的内容添加到请求头的 cookie 中(代码实现要手动添加,或者使用其他创建 session 的方式自动添加),在请求其他接口时会始终携带这个这个请求头。
    2.4、服务端收到客户端发起的请求后,会从请求头中将 session 提取出来与之前存储到 Redis 中的 session 进行对比,如果一致则返回对应的接口数据给客户端,如果不一致或者是超时则不返回接口数据给客户端。
    2.5、session 鉴权缺点很明显,服务端存储压力较大,需要大量的存储空间来存储 session,因此 token 鉴权就应运而生了。

四。 token 鉴权流程

  1. 鉴权流程

image.png

  1. 鉴权过程详解

    2.1、用户发起登陆,客户端提交用户名和密码,服务端会对用户提交的数据进行校验,校验通过以后此时会提取用户关键信息(比如用户名密码、用户 id、时间戳等信息进行排序、然后再进行签名运算)通过特定的算法生成 token,然后将这个 token 放在响应头里面返回给客户端。
    2.2、客户端收到响应结果,然后会从响应结果里面获取 token(这个步骤前端工程师完成),然后将 token 放在请求头 token 字段中(通常情况下是这个字段,具体由后端决定),再去请求其他接口。
    2.3、服务端再次收到客户端,此时服务端会去请求头中取出 token,然后对 token 进行解签,获取到用户关键信息,再去数据库去进行查询是否存在改用户。但凡这个 token 被修改过,解签就会失败,鉴权就自然失败了。
    2.4、服务端鉴权成功就会返回对应接口数据给客户端,鉴权失败就不会返回对应数据。

 

本文由柠檬班  海励 老师原创,转载需注明出处!
想了解更多咨询的同学,可以加辅导员领取相关学习资料:qd20150815  备注:CSDN   领取哦
 


http://chatgpt.dhexx.cn/article/RHVNOfRr.shtml

相关文章

常见的鉴权方式简述

一、什么是鉴权,为什么要鉴权 鉴权:是指验证用户是否有访问系统的权利。 为什么要鉴权 :对用户进行鉴权,防止非法用户占用网络资源,非法用户接入网络,被骗取关键信息 二、鉴权方式 Basic Auth basic au…

笔记——什么是鉴权

前言 鉴权是自动化测试路上的拦路虎;故以此记录鉴权到底是怎么回事。 一、什么是鉴权,为什么要鉴权 鉴权:是指验证用户是否有访问系统的权利。为什么要鉴权 :对用户进行鉴权,防止非法用户占用网络资源,非…

ftok()函数解析

ftok 消息队列、信号灯、共享内存常用在Linux服务端编程的进程间通信环境中。而此三类编程函数在实际项目中都是用System V IPC函数实现的。System V IPC函数名称和说明如下表15-1所示。 表15-1 System V IPC函数 消息队列 信号灯 共享内存区 头文件 <sys/msg.h> …

ftok()函数的使用

在上一篇文章中&#xff0c;Mayuyu讲述了共享内存的原理以及使用方法。在创建共享内存之前&#xff0c;必须指定一个ID值&#xff0c;而这个ID值通常是通过现在要讲的ftok()函数得到。ftok()函数原型如下 其中参数fname是指定的文件名&#xff0c;这个文件必须是存在的而且可以…

linux ftok函数的使用

ftok API #include <sys/types.h> #include <sys/ipc.h> key_t ftok(const char *pathname, int proj_id); ftok根据路径名&#xff0c;提取文件信息&#xff0c;再根据这些文件信息及project ID合成key&#xff0c;该路径可以随便设置。该路径是必须存在的&#x…

ftok与fork

ftok函数编辑 系统建立IPC通讯 &#xff08; 消息队列、 信号量和 共享内存&#xff09; 时必须指定一个ID值。通常情况下&#xff0c;该id值通过ftok函数得到。 2ftok原型编辑 头文件 #include < sys/types.h> #include <sys/ipc.h> 函数原型&#xff1a; key_t f…

Linux下的ftok()函数

linux ftok&#xff08;&#xff09;函数 - 清清飞扬 - 博客园 (cnblogs.com) 系统建立IPC通讯&#xff08;如消息队列、共享内存时&#xff09;必须指定一个ID值。通常情况下&#xff0c;该id值通过ftok函数得到。 ftok原型如下&#xff1a; key_t ftok( char * fname, int i…

Linux中ftok函数介绍

函数原型&#xff1a; *key_t ftok(const char fname, int id); 功能&#xff1a;系统建立IPC通讯&#xff08;如消息队列&#xff0c;共享内存时&#xff09;必须指定一个ID值。通常情况下&#xff0c;该id值通过ftok函数得到 返回值&#xff1a;成功返回一个key_t值&#xf…

linux ftok()

系统建立IPC通讯&#xff08;如消息队列、共享内存时&#xff09;必须指定一个ID值。通常情况下&#xff0c;该id值通过ftok函数得到。 ftok原型如下&#xff1a; C代码 key_t ftok( char * fname, int id) key_t ftok( char * fname, int id) fname就时你指定的文件名&a…

Linux中ftok函数详解

在ipc通信中 system V 模式的ipc通信中都需要一个key值来生成对应的ID&#xff0c;那么key是如何生成的呢&#xff1f; 通过函数ftok生成 #include <sys/types.h>#include <sys/ipc.h>key_t ftok(const char *pathname, int proj_id);参数&#xff1a; pathname: …

ftok说明

文章一&#xff1a; ftok函数 系统建立IPC通讯&#xff08;消息队列、信号量和共享内存&#xff09;时必须指定一个ID值。通常情况下&#xff0c;该id值通过ftok函数得到。 ftok原型 头文件&#xff1a; #include <sys/types.h> #include <sys/ipc.h> 如下&…

ftok()函数深度解析

关于ftok函数&#xff0c;先不去了解它的作用来先说说为什么要用它&#xff0c;共享内存&#xff0c;消息队列&#xff0c;信号量它们三个都是找一个中间介质&#xff0c;来进行通信的&#xff0c;这种介质多的是。就是怎么区分出来&#xff0c;就像唯一一个身份证来区分人一样…

linux进程间通信--消息队列相关函数(ftok)详解

ftok 消息队列、信号灯、共享内存常用在Linux服务端编程的进程间通信环境中。而此三类编程函数在实际项目中都是用System V IPC函数实现的。System V IPC函数名称和说明如下表15-1所示。 表15-1 System V IPC函数 消息队列 信号灯 共享内存区 头文件 <sys/msg.h> &l…

19-逆波兰表达式求值(栈)

逆波兰表达式求值 1.题目描述2. 思路3.代码实现3.1 c实现 4. 复杂度分析 1.题目描述 LeetCode题目链接 逆波兰表达式由波兰的逻辑学家卢卡西维兹提出。逆波兰表达式的特点是&#xff1a;没有括号&#xff0c;运算符总是放在和它相关的操作数之后。因此&#xff0c;逆波兰表达式…

逆波兰表达式求值

二元运算符的表达式定义为&#xff1a;(操作数) (运算符) (操作数) &#xff0c;其中操作数也可以为表达式。 在计算机中&#xff0c;根据运算符所在的不同位置来命名&#xff0c;表达式可以有如下三种不同的表示方法&#xff1a; 记表达式为&#xff1a;Exp S1 OP S2&a…

逆波兰表达式 c++

题目&#xff1a; 逆波兰表达式定义&#xff1a;1&#xff09;一个数是一个逆波兰表达式值为该数 2&#xff09;运算符 逆波兰表达式 逆波兰表达式 是其表达式&#xff0c;只有两个逆波兰表达式的值运算的结果 思路&#xff1a;用递归解决递归形式问题。 #include <iostr…

波兰表达式和逆波兰表达式

波兰表达式和逆波兰表达式 今天zxy的实验内容是关于逆波兰表达式的计算&#xff0c;刚好最近在做关于数据结构的习题&#xff0c;于是想着对波兰表达式和逆波兰表达式的转化和运算分别进行一个学习&#xff0c;于是写了这篇博客(有错的地方欢迎大家指出。) 常见的运算表达式&…

逆波兰表达式,走一波

逆波兰表达式又叫后缀表达式&#xff0c;中学时候学的那种表达式叫中缀表达式。 例如&#xff0c;5(63)3-1 &#xff0c; 3(4(21)2)-3 例子中的这两个式子&#xff0c;就是中缀表达式。下面这两个就是后缀表达式&#xff1a; 56331- &#xff0c; 342123- 中缀…

计算逆波兰表达式

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;数据结构。数据结构专栏主要是在讲解原理的基础上拿Java实现 ⭐码云地址超链接(Gitee)&#xff1a;这里存放我学…

JavaScript逆波兰表达式求值

逆波兰表达式简介 逆波兰表达式又叫做后缀表达式。逆波兰表示法是波兰逻辑学家J・卢卡西维兹(J・ Lukasiewicz)于1929年首先提出的一种表达式的表示方法 。后来,人们就把用这种表示法写出的表达式称作“逆波兰表达式”。逆波兰表达式把运算量写在前面,把算符写在后面。 逻辑提…