为啥 APP 要用 token 而不用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥 APP 要用 token 而不用相关的知识,希望对你有一定的参考价值。

你对 TOKEN 和 SESSION 的理解有误。

SESSION 是服务器通过 Key-Value 对来保存数据的一种机制,比如 APP 的登录状态可以用 SESSION 来保存。

TOKEN 翻译过来叫令牌,令牌是什么意思?可以拿现实中的令牌对比,现实中的令牌起到通行证的作用,而这在服务端也是一样的。我们在登录后,服务端使用 SESSION 保存我们的登录状态,并把 SESSION 的 Key 返回给客户端,那么这个 Key 就成为我们的令牌(TOKEN),我们以后再访问数据,就直接把这个 TOKEN 随着请求一起发送给服务端,这样服务端通过这个 TOKEN 在 SESSION 中查找数据,如果有就说明 TOKEN 有效(就像你去旅游,关口认可你的通行证),并取出你的登录数据,利用你的用户信息(保存在登录数据内)查出你想要的内容。

实际上 TOKEN 的校验会更复杂,上面只是给出一个简单的例子方便理解。
参考技术A session
和 oauth token 并不矛盾,作为身份认证 token
安全性比session好,因为每个请求都有签名还能防止监听以及重放攻击,而session就必须靠链路层来保障通讯安全了。如上所说,如果你需要实现有状态的会话,仍然可以增加session来在服务器端保存一些状态

以上是关于为啥 APP 要用 token 而不用的主要内容,如果未能解决你的问题,请参考以下文章

为什么要用token

为啥我要传输 `client_secret` 来获取 `access_token`?

如何以及为啥使用 refresh_token 处理 jwt 令牌过期,还有另一种选择吗? [关闭]

APP登录Token认证过程

token和JWT token区别登录安全页面权限数据权限单点登录

为啥我们不应该使用 access_token 作为 refresh_token