简要介绍Token、Cookie与Session | 青训营笔记

172 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第三篇笔记。

在开发青训营项目中,几乎所有请求都需要利用token进行用户鉴权,并且,在今后进行Web开发的过程中,用户鉴权应该很普遍,因此,笔者在此做个简单的记录与总结

基本介绍

Cookie

Cookie是存储在浏览器中的一种数据,由服务器生成,发送给浏览器,下一次访问同一个网站时,服务器返回相应的数据

Session

Session字面意思即会话,通俗来讲,服务器想要知道是谁向自己发送请求,与自己创建会话,为每一个客户端分配一个Session,之后客户端与服务端通信,都带上这个Session供服务器辨识。上文提到的Cookie其实是Session的一种实现方式。

举个例子,我们日常生活中使用的聊天软件,在于不同的人聊天时会创建不同的对话框,这个对话框就可以抽象化理解为一个Session,显然,我们根据这个Session里的头像或者备注等信息辨识出是在与谁聊天。

Token

Token是服务端生成的,用于作为客户端请求令牌的一串字符串。在此以用户鉴权为例:客户端在第一次登录时,服务端便会生成一个Token并返回给客户端,客户端之后的请求,只需带着Token前来,服务端鉴定该Token的合法性即可,而不需要频繁地查询数据库,比对用户名与密码是否正确。

区别及优劣

前文提到Cookie是Session的一种实现方式,故下午只提及Session。

Session的出现,其实是由于Http协议是一种无状态协议,服务端在每次请求时都不知道对应的客户端身份,由此利用Session实现对HTTP协议的补充。在服务端生成Session时,便将Session存储在服务端,由此占用了一定的资源,加大了服务器的负担,因此可能需要定期清理过期的Session。但也因此,提高了安全性。

而Token不一定存储在服务器上,也因此,Token可能会面临着更高的风险,但是由于更加灵活的方式,其对服务器性能的提升是优于Session的。