Token是什么-和session、cookie相比,使用场景有什么区别

在Web开发领域,相信大家对于Cookie和Session都很熟悉,Cookie和Session都是会话保持技术的解决方案。随着技术的发展,Token机制出现在我们面前,不过很多开发者对于Token和Cookie、Session的区别及使用场景分辨不清。

    Cookie和Session的用途:
        要知道我们访问网站都是通过HTTP协议或HTTPS协议来完成的,HTTP协议它本身是无状态的协议(即:服务器无法分辨哪些请求是来源于同个客户)。而业务层面会涉及到客户端与服务器端的交互(同网站下多个页面间能共享数据),此时服务器端必须要保持会话状态,这样才能进行用户身份的鉴别。

    由于HTTP无状态的特性,如果要实话客户端和服务器端的会话保持,那就需要其它机制来实现,于是Cookie和Session应运而生。
a.jpg

    通常情况下,Session和Cookie是搭配在一起使用的。

    Token是什么:
        上面说到的Session和Cookie机制来保持会话,会存在一个问题:客户端浏览器只要保存自己的SessionID即可,而服务器却要保存所有用户的Session信息,这对于服务器来说开销较大,而且不利用服务器的扩展(比如服务器集群时,Session如何同步存储就是个问题)!

    于是有人思考,如果把Session信息让客户端来保管而且无法伪造不就可以解决这个问题了?进而有了Token机制。

Token俗称为“令牌”,它的构成是:

uid:用户唯一身份标识

timestamp:当前时间戳

sign:签名字符串,防止第三方伪造数据;签名密钥是存储在服务器端的,其它人无法知道

其它附加参数。

    Token机制下的认证流程
    Token机制其实和Cookie机制极其相似,主要有以下流程:

1、用户登录进行身份认证,认证成功后服务器端生成Token返回给客户端;

2、客户端接收到Token后保存在客户端(可保存在Cookie、LocalStorage、SessionStorage中);

3、客户端再次请求服务器端时,将Token作为请求头放入Headers中;

4、服务器端接收请求头中的Token,将用户参数按照既定规则再进行一次签名,两次签名若一致则认为成功,反之数据存在篡改请求失败。
(生成签名示例图)
b.jpg
(验证签名示例图)
c.jpg
Token与Cookie+Session的区别:
    Cookie其实也充当的是令牌作用,但它是“有状态”的;而Token令牌是无状态的,更利于分布式部署。

此内容选自网上网友回答-仅作记录交流,原文出处:点我访问

作者:徐先森 文章名: 《Token是什么-和session、cookie相比,使用场景有什么区别》
收录情况: 百度已收录
版权说明:若无特别注明,本文皆为 "徐博客”原创,转载请保留出处!

相关推荐

发表评论

路人甲
看不清楚?点图切换 Ctrl+Enter快速提交

网友评论(10)

Hi, Neat post. There is a problem with your site in web explorer,
could test this? IE nonetheless is the marketplace chief and
a huge component of other people will pass over your wonderful writing because of this problem.
RR 3天前 回复
Neurontin  https://agenericcialise.com/ - buy cialis canadian cialis black 800mg  <a href=https://agenericcialise.com/#>Generic Cialis</a> cialis blindness
Purnich 2个月前 (2020-06-23) 回复
Best Price For Cialis 5mg  <a href=https://buycialisuss.com/>cialis online india</a> Viagra Fast Shipping Usa  <a href=https://buycialisuss.com/#>Buy Cialis</a> Cialis O Viagra
BoryFeexy 2个月前 (2020-06-14) 回复
Keflex In Renal Impairment  <a href=https://buyciallisonline.com/#>Cialis</a> Is Cephalexin A Sulfa Drug  <a href=https://buyciallisonline.com/#>buy liquid cialis online</a> Como Conseguir Viagra
JanVurl 4个月前 (2020-04-24) 回复
Uses For Keflex Dog  <a href=https://apcialisle.com/#>Cialis</a> Levitra First Time Use  <a href=https://apcialisle.com/#>Cialis</a> Besser Als Viagra
Stephar 5个月前 (2020-03-22) 回复
Viarga  <a href=http://apcialisle.com/#>cialis prices</a> Buy Cialis Online Nopw  <a href=http://apcialisle.com/#>Cialis</a> Acheter Kamagra Pas Cher
Stephar 5个月前 (2020-03-13) 回复
Cialis Kaufen Preise  http://abuycialisb.com - cheap cialis online Flagyl 400mg Tablets Dosage  <a href=http://abuycialisb.com>cialis generic</a> Can I Buy Levitra At Walgreens
Stevfeen 6个月前 (2020-02-21) 回复
scatola Kamagra Acquisto  http://cheapcialisir.com - Buy Cialis Erfahrungsbericht Viagra Rezeptfrei  <a href=http://cheapcialisir.com>cialis generic</a> Generic Viagra Costco
Lesbemi 6个月前 (2020-02-01) 回复
Overnight Shipping On Asthma Inhalers  http://cialisjh.com - Buy Cialis Levitra Not Effective  <a href=http://cialisjh.com>Buy Cialis</a> Acquistare Beni Kamagra On
MatExping 6个月前 (2020-01-31) 回复
Kamagra Corriere Espresso  http://cialibuy.com - Buy Cialis Bayer Levitra  <a href=http://cialibuy.com>Cialis</a> Viagra Costo Attuale
Stevfeen 7个月前 (2020-01-23) 回复