15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > [编程]-web认证

[编程]-web认证

时间:2023-08-31 21:24:01 | 来源:网站运营

时间:2023-08-31 21:24:01 来源:网站运营

[编程]-web认证:cookie在客户端




cookie 是不可跨域的: 每个 cookie 都会绑定单一的域名,无法在别的域名下获取使用,一级域名和二级域名之间是允许共享使用的(靠的是 domain)




session 是基于 cookie 实现的,session 存储在服务器端,sessionId 会被存储到客户端的cookie 中




单个 Cookie 保存的数据不能超过 4K




每次请求都要带token,token在header

token是签名后的凭证

token不存储在服务器端

token是无状态的设计

(ssession使得服务器有状态化)




jwt支持跨域认证

jwt自包含了一些会话信息,所以对数据库的查询操作较少(jwt会查询数据库吗? 如果把解密jwt的密钥存数据库的话就需要查询)

jwt的token可以保存在localstorage,也可以使用cookie?

jwt不使用cookie,所以不用担心跨域(和上一条冲突? 放cookie里发送不能跨域。但是放header里是可以跨域的)

无状态: 状态不存在服务器端




*** jwt的使用

- 方式1

header里:

Authorization: Bearer <token>




- 方式2

跨域时,可以将jwt放post请求的body里




- 方式3

url传送:

http://www.example.com/user?token=xxx




可以减少查询数据库次数




服务器不存储jwt,故不涉及session那样在集群下需要共享的问题。

但是这也导致jwt一旦下发token后就无法废弃该token或更改其权限(即无法随时踢客户端下线)。

故jwt的有效期尽量要设短。




适合一次性的命令认证。




为了避免盗用,应该使用https。




*** cookie的使用

不要存敏感信息

因和域名绑定,无法跨域

移动端对cookie支持不是很好,session要基于cookie(存sessionId)实现,所以移动端常用的是token。




*** session的使用

用户在线量多时, 需要及时清内存

集群部署的问题: 产生session的是某个服务器,如果后来处理请求的服务器不是产生session的服务器,就涉及session共享的问题。




cookie涉及跨域,所以为了避免这个问题,也有做法是把sessionId放在url里




*** token的使用

一般用内存如redis来提高查询效率




token 可以避免 CSRF 攻击(因为不需要 cookie 了)




**** 和jwt的区别

单纯的token需要存服务器比如redis里,jwt不用(因将token和payload加密后存客户端了)




要做随时踢下线这种强管理的功能,就需要用token-session这种有状态的模型,比如用sa-token框架(这里的意思应该是指这个框架,可以有token方式,也可以有session方式)。







token如何和session结合?

//一般没有这种做法。如果token作为session的id,那其实还是session的方式。




摘要自:

还分不清 Cookie、Session、Token、JWT? - 老刘的文章 - 本站



关键词:认证

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭