登录的几种方式

本文探讨了Session、Cookie以及JWT在Web应用中的作用,强调了Session在分布式系统中的局限性,Cookie的安全隐患,以及JWT作为无Cookie解决方案的优点,特别提到了JWT在防止CSRF攻击方面的优势。
摘要由CSDN通过智能技术生成

一、session

1、客户端发送请求,服务器将登录信息存储在 Session 中,Session 依赖于 Cookie(cookie指的就是在浏览器里面存储的一种数据,仅仅是浏览器实现的一种数据存储功能。Cookie实际上是一小段的文本信息。),即服务器创建 Session 时会分配一个 SESSIONID,并在响应时将这个 SESSIONID 存储到 Cookie 中。
2、客户端收到这个 Cookie 后自动保存,并在下次访问时带上这个 Cookie,届时服务器就能通过这个 Cookie 中的 SESSIONID 找到对应的 Session 从而识别用户。

3、问题:对于分布式系统而言,服务器之间是隔离的,Session 是不共享的,存在 Session 共享问题

cookie与session区别
1、cookie数据存放在客户的浏览器上,session数据放在服务器上;
2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session;
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用cookie;

二、token

1、客户端通过账号密码登录。
2、服务器通过查询数据库进行验证。
验证成功后 ,创建一个 Token 存储在 Redis 中,并将这个 Token 返回给客户端。
3、客户端收到这个 Token 后将其保存,并在下次访问时带上这个 Token。
4、客户端再次访问服务器时携带 Token。服务器 验证 Token:通过请求头中的 Token 查询 Redis 中存储的用户信息即可识别用户。

三、JWT

1、概念

JWT (Json Web Token),JWT 由三部分组成:Header(加密算法和 Token 类型)、Playload(数据)、Signature。

// Decoded
header = {
  	"alg": "HS256",
  	"typ": "JWT"
}
playload = {
  	"sub": "1234567890",
  	"name": "John Doe",
  	"iat": 1516239022
}
signature = HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), 签名Secret)
  
// Encoded
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.7hQ9doI17Q47YK31oBIf-etsfFTVhSK9wwqgoOOr_zs

 Header 经过 BASE64 编码后生成字符串。

 Playload 经过 BASE64 编码后生成字符串。

 Signature 将前两部分内容 + 密钥,HS256 算法进行加密签名。

2、优点:不依赖Cookie,使得其可以防止CSRF(跨站请求伪造)攻击;

适合分布式系统。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值