活动地址:CSDN21天学习挑战赛
token 和 Session 的问题在面试中几乎是必问的,不管是开发也好,还是测试也好,本文通过图形说明它们的原理以及弊端,遇到面试官不慌。
什么是 token
在接口的响应结果中,经常会出现类似这样的返回值。
{
"msg": "success",
"my_token": "W4ifQ"
}
往往需要在访问下一个接口时传递 token 数据。
curl -X POST -H Authorization:eyJzdWIiOiAieXV6IiwgInJvbGUiOiAiYWRtaW4ifQ <http://127.0.0.1:5000/user>
{"alg": "HS256","typ": "JWT"}
所以 token 本质上就是用户信息通过编码转化成另一种形态得到 token, 再通过 token 解码得到用户数据。
无状态
要理解 token 的由来,先得从 HTTP 讲起。HTTP 协议是一种无状态的协议,服务器没有记忆能力,无法记住客户端之前有没有发送过请求,因此客户端每次发送的请求都是独立的。
这会造成一个问题,当客户端必须要登录才能进行的操作,每次请求都要重复发送用户名和密码给服务器进行校验,频繁发送敏感信息会造成很大的安全问题。
session
有没有一种方式让服务器记住客户端的(登录)状态呢?session 就是一种很好的方式,当用户登录时,发送用户名和密码之