https://segmentfault.com/a/1190000013010835#comment-area

https://segmentfault.com/a/1190000020143933?utm_source=sf-related

https://blog.csdn.net/wang839305939/article/details/78713124

Token认证流程

  1. 客户端使用用户名跟密码请求登录
  2. 服务端收到请求,去验证用户名与密码
  3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
  4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者Local Storage 里
  5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
  6. 服务端收到请求,然后去验证客户端请求里面带着的 Token(request头部添加Authorization),如果验证成功,就向客户端返回请求的数据 ,如果不成功返回401错误码,鉴权失败。

https://www.lishuaishuai.com/nodejs/1167.html?soure=jj

Token和session的区别

session-cookie的缺点:
(1)认证方式局限于在浏览器中使用,cookie 是浏览器端的机制,如果在app端就无法使用 cookie。
(2)为了满足全局一致性,我们最好把 session 存储在 redis 中做持久化,而在分布式环境下,我们可能需要在每个服务器上都备份,占用了大量的存储空间。
(3)在不是 Https 协议下使用 cookie ,容易受到 CSRF 跨站点请求伪造攻击。
token的缺点:
(1)加密解密消耗使得 token 认证比 session-cookie 更消耗性能。
(2)token 比 sessionId 大,更占带宽。

两者对比,它们的区别显而易见:
(1)token 认证不局限于 cookie ,这样就使得这种认证方式可以支持多种客户端,而不仅是浏览器。且不受同源策略的影响。
(2)不使用 cookie 就可以规避CSRF攻击。
(3)token 不需要存储,token 中已包含了用户信息,服务器端变成无状态,服务器端只需要根据定义的规则校验这个 token 是否合法就行。这也使得 token 的可扩展性更强。


token是一种用户标识,表示用户身份,类似身份证件。
Token是在服务端产生的。如果前端使用用户名和密码向服务端请求认证,服务端认证成功,服务端会返回Token 给前端。前端可以在每次请求的时候带上Token 证明自己的合法性地位。如果这个Token在服务端持久化(比如存入数据库),那它就是一个永久的身份令牌。

使用Token 和 Refresh Token的时序图:
1.登录:
token
2. 业务请求:

token
3.Token过期,刷新Token
token

分离认证服务:
当Token 无状态之后,单点登陆就变得容易了。前端拿到一个有效的Token,它就可以在任何同一体系的服务上认证通过,只要它们使用同样的**和算法来认证Token的有效性。
token
如果Token 过期了,前端仍然需要去认证服务更新 Token:
token

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-30
  • 2022-02-07
  • 2022-12-23
  • 2021-07-04
猜你喜欢
  • 2021-06-15
  • 2021-10-31
  • 2021-07-15
相关资源
相似解决方案