关于登录态的几点理解

1、首先http协议是无状态的

什么是无状态?就是服务器不知道是谁发送了这个http请求,无法区分用户

2、为什么要有登录态

交互式网站的兴起,比如购物网站,服务器必须知道有哪些人往自己购物车里增加了商品,哪些人下了订单,就意味着,每次发送接口请求都必须区分出每个人。但是http又是没有状态的,没办法记录和区分用户。所以登录态就是用来区分用户的,让服务器知道每次的请求会话都是谁发送的,谁需要处理的。

3.区分用户的几种方式

1)、sessionid

登录的时候,服务器生成一个sessionid返回给客户端,客户端记住这个sessionid,然后每次请求的时候都把这个sessionid一起发送过来,就能区分出谁是谁了,但前提是服务器必须记住所有的sessionid。

2)、token

针对sessionid的弊端(要占用大量服务器资源进行存储)所产生的新的方式。同样是服务端发送一个唯一标识给客户端,然后每次的请求都将这个标识传给服务器进行验证。区别在于,服务端不用存储这个唯一标识。

如何生成这个唯一标识?

将登陆发送过来的数据,用某种算法,然后再加一个秘钥,做一次签名,把这个数据和签名一起作为token发送给客户端。

如何验证唯一标识?

当请求发送到服务端的时候,再用同样的算法和秘钥,对token中的数据做一次签名,和token中的签名进行对比,如果相同,说明认证通过。

注意:token中不能保存密码等用户敏感信息。

token验证请求过程:

1、用户登录时,发送用户名和密码到服务端;

2、服务端验证用户名和密码的正确性;

3、验证通过,返回一个带有签名的token给客户端;

4.客户端cookie存储token,并且之后每次发送请求时都将这个token放到header中;

5、服务端接收到请求,并且拿到token,进行签名验证,然后返回信息给客户端

posted @ 2020-01-02 16:42  abc1234_abc  阅读(3889)  评论(0编辑  收藏  举报