session 解决啦什么问题
当把token存入cookie,我们知道cookie存储的空间是有限的,一般是4kb。且是存在与浏览器,存储与cook的数据容易获取还容易被更改还容易丢失,
而session是将数据存储在服务端,比如用户登录的信息。那吗的他的存储空间理论上无限的,而且数据不容易被获取,还不容易丢失,更不可能篡改。但是它的缺点也很明显,占用服务器资源。
原理图
浏览器第一次请求服务器,服务器会生成一个全球唯一的sessionID储存起来如上图key值为sessionID,value值为信息,将sessionID通过cookie中发送到浏览器,而后浏览器想要登录,就需要将sessionID发送过去,服务器解析这个sessionID是否被篡改过,没被篡改才会将信息储存起来,当有新的浏览器第一次访问服务器,服务器会给新的访问者生成一个新的sessionID。服务的sessionID有可能是存在数据中的,也有可能是存在过期时间的
sessionID 就是uuid(全球唯一id),之所以不会被篡改,是因为再生成sessionID中需要你提供的一个secret字符串,该字符串有服务器生成,它是加密的密钥,加解密都需要密钥,而密钥又在服务器,故不会被篡改
使用session插件
插件名:express-session