• 会话保持之cookie session token


    HTTP请求是无状态的,但是可以通过cookie, session,token等方式保存请求过程中的用户状态信息。

    1 cookie

    存储在用户本地的客户端, 服务器生成,发送给浏览器,下次请求统一网站给服务器。

    服务端为每一个用户签发不同session id发给浏览器存储在cookie,下次访问会带上这个session id,服务端就知道这个访问是哪个用户了。

    存在跨域的问题

    有的客户端不支持cookie,需要手动设置,比如小程序

    浏览器对cookie有限制,不能手动设置cookie,对于混合嵌套的开发有问题,比如小程序跳转H5页面,不能携带cookie

    保存数据有限:浏览器对单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie

    2 session

    因请求会话而产生,由服务器端创建,存储在服务端,为http提供持久机制,

    session是一个容器,可存放会话过程中的任何对象,cookie中存放着一个sessionID,请求时会发送这个ID。

    session一定时间内保存在服务器上,当访问增多,比较耗服务器资源。

    分布式或者集群部署时存在session共享的问题,(需要引入redis, memcached来解决)

    3 token

    令牌,由uid+time+sign[+固定参数],属于一种临时的证书签名,是服务端发放给客户端的通行证在服务端产生的。

    uid: 用户唯一身份标识

    time: 当前时间的时间戳

    sign: 签名, 使用 hash/encrypt 压缩成定长的十六进制字符串,以防止第三方恶意拼接

    固定参数(可选): 将一些常用的固定参数加入到 token 中是为了避免重复查库

    token在客户端一般存放于localStorage,cookie,或sessionStorage中。在服务器一般存于数据库中

    token 的认证流程与cookie很相似

    用户登录,成功后服务器返回Token给客户端。

    客户端收到数据后保存在客户端

    客户端再次访问服务器,将token放入headers中

    服务器端采用filter过滤器校验。校验成功则返回请求数据,校验失败则返回错误码

    常用token认证方案:JWT -- JSON WEB TOKEN

  • 相关阅读:
    Java高并发17-LongAccumulator类详解
    Java高并发16-LongAdder类源码解析(下)
    SpringBoot之模板引擎
    SpringBoot之yml与properties配置文件格式的区别
    SpringBoot之SpringBoot整合静态资源访问
    SpringBoot之SpringBoot的启动方式
    SpringBoot之RestController注解
    SpringBoot之SpringBoot依赖引入
    SpringBoot之SpringBoot与SpringCloud之间的区别
    SpringBoot之IDEA创建SpringBoot项目
  • 原文地址:https://www.cnblogs.com/brant/p/12641953.html
Copyright © 2020-2023  润新知