zoukankan      html  css  js  c++  java
  • 接口的鉴权cookie、session和token

    1、HTTP是无状态协议

    什么是无状态?就是说这一次的请求和上一次的请求是没有任何关系的,无法共享信息。好处就是速度快。

    2、cookie、session的加入

    HTTP请求是无状态的,所以解决共享信息的问题必须采用其他的手段,于是就有了sessionid,sessionid是基于cookie实现的。服务器为每一个用户生成一个不一样的随机字符串,每次向服务器发起HTTP请求时,都会把这个字符串传给服务器,这样就能区分用户了。

    3、session的缺点

    对于客户端来说session是非常好的,只需要cookie中存一个字符串就好了,但对于服务器来说,必须存储所有在线用户的session,那么这就占用了很大的资源(cpu,内存),严重影响服务器的性能。这时可以选择去扩展服务器做集群,但是同时也出现了分布式session的问题,那么可以采用session粘滞或者session集中式管理(redis)来解决。

    session原理图:

    纯手工画图,不喜勿喷

    4、cookie、session的区别

    cookie:客户端和服务端都能生成cookie,存放在客户端。存放一些不敏感的数据,数据类型只能是字符串(json).

    session:服务端生成session,存放在服务端。可以存放任意数据,Java中session中可以存放任意对象,session必须依赖cookie实现。

    5、token 票据的意思,就是门票、令牌

    token也是一个字符串,用户输入用户名和密码之后,向服务器发起请求,服务器会生成一个token串,token串是由header+userid+时间戳,在经过一个加密的算法,生成一个token字符串。

    token验证原理图:(偷的图,哈哈)

    session和token的区别:

    session:服务器生成、存储、验证,以cookie的方式传给客户端,客户端以同样的方式发送给服务端。session有状态。

    token:服务器生成、验证,以cookie或者请求头的形式传给客户端,客户端以同样的方式发送给服务器,token无状态。

  • 相关阅读:
    shell脚本根据端口号kill掉进程
    使用netstat -ano 查看机器端口的占用情况(windows环境)
    分享一两个小工具,
    将压缩文件伪装图片格式文件以及将python文件转化为exe文件(测试完,真的有效)
    celery 异步任务 周期任务 定时任务的实现
    wsgi、uwsgi、asgi协议的关系
    centos7忘记密码更改步骤
    工作遇到的坑以及自己的学习悟道之道
    案例小集锦
    asp.net mvc部署
  • 原文地址:https://www.cnblogs.com/xingyunqiu/p/11512152.html
Copyright © 2011-2022 走看看