接口鉴权之cookie session和token (接口 鉴权)
本文目录导航:
接口鉴权之cookie,session和token
接口鉴权是确保只有授权用户可以访问特定接口的过程。
在开发的系统中,无论是移动应用还是网站,都需要权限验证,以确保用户在执行某些功能时已登录。
例如,在淘宝购物时,必须登录才能下单。
每次进行操作,系统都会检测用户信息的有效性。
鉴权需要通过代码或工具(如Postman或Jmeter)设置来完成。
主流鉴权方式有两种:session和token。
小部分系统可能使用session,但大部分采用token。
这两者常依赖于cookie技术作为基础。
cookie在session和token中扮演关键角色。
为什么需要session、token、cookie等技术?它们是基于HTTP协议实现的,HTTP协议是无状态的,每次请求与前一次无关,无法共享信息。
比如在线追剧时,网站能记住你上次看到的剧集。
但HTTP协议无法记住信息,每次请求都从头开始。
引入session、token和cookie等技术,以解决有状态需求。
cookie是最简单、最方便的技术之一。
打开网站后,通过f12检查(或右键检查在谷歌浏览器中)可以看到cookie存储信息。
每个域名有自己的cookie,用于存储名字、值、失效时间等数据。
cookie在本地存储,用于快速识别用户,如显示用户名,而金额或密码等敏感信息不存于此。
cookie的优点是轻便、占用资源少,适合存放非敏感数据。
session是鉴权关键,涉及客户端与服务器交互,用于维护会话状态。
它由服务器生成sessionId,并通过cookie回写到客户端,确保用户下次访问无需重新登录。
Cookie和session的区别在于,session存储在服务器端,由服务器生成,回写到客户端;而cookie由客户端生成,主要用于存放不敏感数据。
Token技术是为了解决session性能问题,通过生成token在客户端存储,无需在服务器存储,有效提升服务器性能。
Token和session的对比在于,token是一个字符串,不会存储在服务器端,且可以采用请求头或请求体发送,不受cookie限制。
session依赖于cookie,存储在服务器,客户端通过cookie发送给服务器。
使用token或session进行鉴权包括登陆后获取token或session字符串,携带至客户端,并在请求需要鉴权的接口时,使用相应的token或session。

浏览器中的cookie存储
cookie:cookie数据会自动在web浏览器和web服务器之间传输,也就是说当发送http请求时,就会把该请求下域名所有的cookie值发送到web服务器端。
因此服务器脚本可以对存储在客户端的cookie值进行读写操作。
cookie的有效期是很短暂的,一般关闭浏览器,cookie保存的数据就会丢失,要想延长cookie的有效期,可以通过设置http头信息来实现。
服务器保存cookie的数目一般不超过50个,每个不能大于4KB;cookie的优点是能在可以和服务器进行通信。
缺点是它会随着http头信息一起发送的,增加网络流量,他只能存储少量数据,只能存储字符串,存在安全问题。
接口鉴权之cookie,session和token
接口鉴权是鉴定权限的过程,例如在淘宝下单时,系统会检测用户信息是否有效以确保权限。
这需要通过代码或工具如Postman或JMeter实现,模拟鉴权。
鉴权主要技术包括session和token,后者是目前主流选择,但部分应用仍采用session。
它们都可能使用cookie作为基础。
cookie、session与token是http协议下解决无状态问题的技术。
http协议无状态意味着每次请求独立,无法共享信息。
例如,视频网站记录用户观看进度以实现有状态体验,反之为无状态体验。
引入cookie、session与token技术用于解决有状态需求。
cookie是存储信息的技术,用于记录用户非敏感数据如用户名。
它存储在浏览器端,便于访问但不能存储敏感信息如密码。
cookie优点在于轻便、存储在客户端且支持设置失效时间。
session与cookie类似,用于存储用户会话信息,主要在鉴权中应用。
session存储在服务器端,服务器根据session ID回写到客户端的cookie,实现用户无需重复登录。
session依赖于cookie,客户端生成并发送给服务端。
token技术通过生成唯一标识符解决session性能问题。
用户登录后,系统生成token并将其发送给客户端,而非存储在服务器。
token分为Header、用户信息和签名三个部分,用于验证请求合法性,降低服务器内存压力。
token与session的区别在于:token存储在客户端,不依赖于cookie形式,可以以请求头或请求体发送给服务端;session存储在服务器端,依赖cookie形式,客户端接收并再次发送给服务端。
使用token或session进行鉴权涉及以下步骤:登录后获取session或token字符串,将其携带回客户端;请求需要鉴权的接口时,携带相应的session或token。