什么是登陆TOKEN
作者:知乎
发布时间 22/03/04
来源 https://zhuanlan.zhihu.com/p/73189305
我简直惊了,现在的web开发这么菜吗?连token都不知道??
游戏王都没玩过吗?
咳咳
token这个词,可以简单的翻译成“代替物”,意思也就是代替物。
你怎么表示发起请求的这个人、客户端已经登陆了,怎么知道这个人、客户端是谁呢?“登陆”是抽象的,你不可以把“登陆”放到网上传输。
一种简单的方法是:每次请求都携带账号、密码。这种方式就是HTTP中的basic auth。这种方法其实是绕过了“登陆”,它符合HTTP协议的无状态概念,所以能成为HTTP标准的一部分。
但不是所有问题都可以绕过。比如这种方式无法区分多个客户端,因为每个客户端都用相同的账号密码登陆。而有的时候,我们就是需要区分它。
怎么办?
答案是用一个随机生成的、唯一的字符串“代替”这个看不见摸不着的“登陆”,发送给客户端(通常保存起来)。
任何人,只要拥有登陆token,他就登陆了。因为这个token代表了“登陆”。泄露了token,就泄露了“登陆”状态,但不会泄露密码。
在HTTP请求中,最普遍使用的登陆认证方式就是这样。其中:
- 服务器保存的登陆状态叫session
- 登陆token通过cookie传输、保存
- token的内容通常叫做“session id”
这样做就可以让服务器保存一个状态,进而破坏了HTTP协议“无状态”的的理念,于是即使全世界的网站都在用这种方式登陆,它却不是HTTP标准的一部分。
session已经用了超过30年了,但以前很少有人提token这个词,为什么?因为cookie是通用的,不需要关心内部实现。
现在怎么突然有人提了呢?当然,是因为
装逼啊
明白了吗?