一、鉴权、授权
鉴权:相当于给一个通行证
授权:鉴定是否有权限访问(判断有没有通行证)
Q:浏览器登录了某些网站,下次访问为什么不用登录?
http协议是典型的无状态协议(就是说这一次的请求和上一次的请求是没有任何关系的,无法共享信息。好处就是速度快),即上次登录后,下次再去登录时,依然不认
识‘你',cookie 和session机制就是解决这个问题,让后一次访问无需再次登录,可以直接访问成功
二、cookie 和session流程
客户端发送登录请求,服务器会把登录的账号信息存起来,这个东西就是session,然后服务器返回响应的时候会设置个字段:set-cookie, 这个字段值比如为sessionid或者是jsessionid,这个东西返回给客户端告诉客户端他是谁,然后客户端就将这个信息存到了他的 cookie当中,存的东西就是服务端传过来的sessionid或者是jsessionid,这个sessionid或者是jsessionid会和域名或者是IP 绑定到一起的,表示这个sessionid或者是jsessionid是属于这个域名的,第二次请求的时候,cookie会自动带上,服务器就会检查 有没有sessionid或者是jsessionid,有的话就核对跟之前是不是一致,同时也会有过期时间或者是sessionid或者是jsessionid不对的 情况,也是不能登录成功的
三、token
token: 令牌,凭证 访问其他的接口,必须有这个令牌才能访问 token不需要存到服务器 有了token为啥还要session,因为有的浏览器是不会存你的session的
token和session的区别:
总结:cookie/session/token
cookie:
1、cookie是在HTTP协议下,服务器或脚本可以维护用户信息的一种方式,cookie是由Web服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息,无论何时用户访问到服务器,都会带上该服务器的cookie信息
2、一般cookie都是有效期的,cookie只在浏览器上保存一段规定的时间,一旦超过规定的时间,该cookie就会被系统清除
session:
1、session将数据存储在服务器中,服务器会为每一个用户创建一条session,用户访问服务器的时候需要拿着sessionid去表明自己的身份
2、session的实现是基于cookie,session需要借助于cookie来存储sessionid
注意:cookie和session都是开发设置的,不要去想怎么设置
token:
1、token是需要手动传到参数当中的。session派发的sessionid自动存储在浏览器的cookie api.keyou.site/ 当中,在下次访问这个网站的时候,会自动带上
2、sessionid会存到服务器,需要消耗资源,在浏览器传输过来,要查询,也消耗资源
3、token不需要存储到服务器,服务器会解密,消耗CPU
4、 token可以跨平台,跨域
扩展:三次握手四次挥手