双Token实现登录升级

原登录方式:单Token验证

操作步骤:

  1. 用户登录: 用户在客户端输入用户名和密码,然后将这些信息发送给服务器。

  2. 验证用户信息: 服务器接收到请求后,会首先验证用户提供的用户名和密码是否正确。

  3. 生成JWT: 如果服务器验证用户信息正确,会采用一个签名算法(比如HMAC SHA256或RSA)结合一个只有服务器知道的密钥,生成JWT。JWT的载荷(Payload)部分通常会包含用户的一些信息,例如用户ID,以标识用户身份。

  4. 发送JWT: 服务器将新生成的JWT在响应中返回给客户端。

  5. 存储JWT: 客户端在收到包含JWT的响应后,会把JWT存储在本地,比如说保存进Cookie或者localStorage。

  6. 发送请求: 之后客户端每次向服务器发送请求时,都会将这个JWT放在请求头的Authorization字段中发送给服务器。

  7. 验证JWT: 服务器在收到请求后,会解码JWT,然后使用保存的密钥验证签名。如果签名验证通过,说明请求是由该用户发起的,服务器就会返回请求的数据。如果验证失败,服务器会拒绝请求,并返回一个错误响应。

可能存在的问题:

1. 用户在退出登录以后,如果Token还在有效期内,那么用户依然可以操作,但这是不允许的。

2. 用户还在登录状态中,但是Token的有效期过了,则用户没法继续操作,会给用户带来较差的体验。

解决方法:双Token实现登录升级(登录续签)

  1. 用户登录: 用户使用用户名和密码登录时,服务端验证凭据有效性,然后会设置一个Access Token和一个Refresh Token。

  2. 生成 Token: Access Token中包含了必要的数据(例如用户ID),这个Token具有较短的有效期,例如15分钟。Refresh Token通常设置得更长,例如14天,并且会被存储在数据库中以跟踪它的有效性。

  3. 发送 Token: 服务端将生成的Access Token和Refresh Token都发回给客户端。客户端通常将Access Token存储在内存中,并将Refresh Token存储在安全的地方(比如httpOnly的cookie或本地存储)。

  4. 使用 Access Token: 客户端在后续的每次请求时,都会在请求头中添加Access Token。服务端收到此请求后,会验证Token,如果有效,就处理此请求,否则,返回一个错误信息。

  5. Access Token 过期: 当Access Token过期了,任何试图使用这个过期Token的请求都会得到一个错误响应,提示Token已过期。

  6. 使用 Refresh Token: 如果客户端收到一个提示Access Token过期的错误响应,那么它会使用前面存储的Refresh Token,发送到一个特殊的端点来获取新的Access Token。

  7. 验证和生成新的 Access Token: 当服务端收到Refresh Token后,会验证其有效性(通常要查找数据库并确保它还没有被废止)。如果Refresh Token仍然有效,那么服务端就会生成一个新的Access Token,然后发送给客户端。

重写接口

1. 登录接口:返回双Token

        创建新数据库表,存放刷新Token : id,userid,refreshtoken,time

        先删除原有刷新Token,再将刷新Token保存到数据库中,

2. 退出登录接口:

        删除刷新Token

3. 刷新Token接口:返回新的接入Token

第三章结束啦,明天开始学习第四章啦!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值