token保存在服务器session中,客户端是如何获取token?

用户3708573353


在互联网世界里,我们离不开Session与Cookie技术,但凡涉及到会员登录模块的网站肯定都用到了

Session和Cookie,它们都是会话保持技术。但最近几年,随着微服务、去中心化概念的兴起,Token技术出现在我们面前。

什么是Token技术?

大家所说的Token其实是指令牌,它是由服务器端生成的一串字符串,发放给客户端作为请求令牌,客户端后续的请求都会把此Token带给服务器端进行验证是否有权进行此请求。

通过上面的描述,大家是否感觉Token和Cookie/Session会话操作上差别不大?

为什么会有Token?

Token的出现是为了弥补Cookie+Session机制的短板!传统会话保持技术是用户身份验证成功后在服务器端生成此用户的Session并存储起来,然后将Session的唯一标识SessionID种植到客户端Cookie中的。

但随着网站的用户量越来越大,活跃用户的剧增会导致服务器端的Session文件越来越多,不利于管理。另外服务器端如果要分布式集群布署时,Session会话的同步也是一个问题,所以不易于分布式布署

也就是在这种背景下Token机制应运而生。Token缓解了服务器的压力,减少了查询数据库的频率,它也是无状态的,所以在分布式环境中应用广泛。

一般Token由这几个部分组成:头部+数据+签名。

Token的优点

  • 无状态性决定它适用于分布式环境,扩展性好;

  • 具有时效性,在请求中发送Token而不是Cookie能

    有效防止CSRF攻击(因为POST请求是不受浏览器同源策略限制的);

  • Token是以GET或者Header形式传递到服务器端的,相对于Cookie传输效率更高(Cookie容易被污染);

Token在服务器端生成、在客户端存储

切记,Token是在服务器端生成的,而非客户端生成。服务器端生成Token之后会返回给客户端(返回方式可以是GET传参、Cookie种植,建议以GET传参形式传递给客户端),由客户端存储。

所以说客户端不需要主动获取Token,当用户登录认证成功后,服务器端会主动返回Token给到客户端。

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!


分享到:


相關文章: