登录态,票据和token是个什么玩意儿?

登录态,票据和token是个什么玩意儿? 我们慢慢来说。
 
       以微博为例, 当用户在微博app中输入账号和密码登录后, 微博后台会进行验证, 看看账号和密码是否匹配, 如果匹配, 就登录成功。 用户后续在微博中发帖的时候, 就不需要再输入密码了, 只需要输入内容即可。 这里有个问题, 如果是坏人用别人的账号伪造发帖请求呢? 岂不是代替比人发帖了? 荒唐得很啊。
 
       微博后台不能让用户每次发帖都携带密码啊, 怎么办呢? 实际上, 用户登录成功后, 后台会生成一个特定的信息(可以理解为一个字符串), 这个字符串就是一个令牌, 是一种身份和状态的标志。用户发帖的时候, 客户端不需要携带密码, 而是携带这个令牌就行了, 微博后台验证这个令牌信息, 从而来确定发帖请求是否是用户自己真正的请求, 万事大吉。
 
       可见, 令牌是一种身份, 是一种登录成功的状态, 这个令牌其实就是token,  在很多场合, 也可以叫票据。所以, 你可以认为, 票据==token.
 
       那登录态又是什么意思呢? 登录态有两个含义:
       1.  指登录的状态。 比如大家经常会看到提示登录态已经失效, 登录态应过期, 意思就是说, 现在是退出的状态, 而非登录的状态。
       2.  指票据, 或者说是token.  微博后台的同学可能会说: app传过来的登录态过期了啊。 所以, 这里的登录态是指登录态信息, 说白了, 就是指票据, 也就是token.
 
       对了, 当微博用户登录成功后, 进行发帖时, 出了需要携带登录态票据 /token外、发帖内容外, 还需要携带登录账号吗?  其实可带可不带, 带了也没用, 后台是不能信任这个账号的, 因为谁都可以伪造。 那后台怎么知道是哪个账号发的呢? 很简单, 在进行登录态票据/token校验的时候, 能从登录态票据/token中解出用户账号。 所以, 通常的方式是, app端携带账号、登录态票据/token以及帖子信息, 后台只能相信于从登录态票据/token校验中获取的账号, 而不能直接相信app给的账号。
 
       思考一下, 为什么能从登录态票据/token中解出账号信息呢? 很显然, 在微博后台肯定有绑定关系啊!
 
       最后, 我们来看下, 对于小程序而言, 开发者有可以申请到appID和appKey,  顺便可以获取用户的openID和后台授权的token,  其实, 根据token, 也是能获取到openID的, 这与上面微博的案例,何其相似。

原文地址:https://www.cnblogs.com/absoluteli/p/13958131.html