美文网首页
3种Web会话管理方式

3种Web会话管理方式

作者: tian田小旺 | 来源:发表于2020-09-14 12:07 被阅读0次

title: 3种Web会话管理方式
date: 2017-09-01 14:45:04
categories:

  • web
  • http
    tags:
  • web
  • session
  • cookie
    icon: fa-comments

3种Web会话管理方式

无状态的HTTP

一次请求结束、链接断开。服务器再收到下一个请求、它就不知道是哪个用户发过来了。但是服务器会知道是从哪个客户端发起的、不过我们管理的是用户、不是客户端。所以就有了会话管理​​

server端session

过程

  1. 用户第一次请求 --> 服务器创建session对象(每个session会分配有唯一id,以及设置有失效时间) --> 服务器通过cookie返回sessionid到浏览器
  2. 用户请求 --> 服务器获取cookie里的sessionid --> 验证session有效 --> 服务器延长失效时间
  3. session超过失效时间 --> 服务器销毁该session --> 用户请求 --> 服务器创建新session --> 重新登录
  4. 用户登录成功 --> 服务器往session里设置登录凭证
  5. 用户请求 --> sessionid通过cookie携带发送到服务器 --> 服务器验证对应session的登录凭证 --> 响应请求
  6. 用户登出 --> 服务器清除登录凭证

优点

  1. Java、.net、PHP原生支持,开发简单
  2. 安全性好。只要sessionid足够随机

缺点

  1. 多用户同时在线会占据较大内存
  2. 应用采用集群部署时需要处理多台服务器之间session共享的问题
  3. 多台服务器之间共享session时,还可能需要处理跨域问题
  4. 不适合用在native app:不好管理cookie
  5. 不适合用来做纯API服务的登录认证

解决方法

  • 对缺点1和2:可以采用中间服务器管理session
  • 对缺点3:前后端解决sessionid的cookie跨域即可
  • 实际使用时可以采用单点登录框架

cookie-base

过程

  1. 用户登录 --> 服务器创建登录凭证、数字签名、对称加密 --> key-value形式写入cookie
  2. 用户请求 --> 服务器获取cookie、解密、数字签名认证 --> 判断登录凭证有效期 --> 重新登录/响应请求

优点

  1. 减轻服务端内存压力,只需要创建和验证cookie
  2. 没有多服务器共享session的问题,只需要登录逻辑、数字签名和密钥文件在服务器之间共享
  3. 很多web开发平台(比如PHP的yii)或框架默认使用该方式

缺点

  1. cookie的大小限制
  2. 依然用了cookie,所以也有跨域问题
  3. 不适合用在native app:不好管理cookie
  4. 不适合用来做纯API服务的登录认证

token-base

过程

  1. (类似cookie-based)用户登录 --> 服务端返回token到客户端
  2. 用户请求(通过url参数或者http header主动带上token) --> 服务端验证token

优点

  1. 适用于native app、SPA

缺点

  1. 仅限于纯API的web应用,不适用于点击链接直接请求的情况
  2. 可能会有跨域问题,不过很容易解决
  3. token刷新的问题需要注意

相关

相关文章

  • 3种Web会话管理方式

    title: 3种Web会话管理方式date: 2017-09-01 14:45:04categories: we...

  • SSM开发大众点评实战三之会员模块

    业务分析与数据库设计 表的创建语句:两种会话管理方式比较: 传统管理后台采用的会话管理方式传统登录方式.PNG 针...

  • 会话与状态管理

    Web应用中的会话与会话状态 Web应用的会话状态是指Web服务器与浏览器在会话过程中产生的状态信息,借助会话状态...

  • 002三种web会话管理方式

    http是无状态的,一次请求结束,连接断开,下次服务器再收到请求,它就不知道这个请求是哪个用户发过来的。当然它知道...

  • 三种常见的Web会话管理方式

    要了解三种常见的会话管理方式之前,先要知道为什么会出现这些方式?做开发的童鞋应该都知道http是没有状态的,请求完...

  • ZooKeeper的会话分桶策略

    分桶策略: ZooKeeper的会话管理主要是由SessionTracker负责的,其采用了一种特殊的会话管理方式...

  • web会话跟踪:cookie和session

    什么是会话? web语言中的会话web会话可简单理解为:用户开一个浏览器,访问某一个web站点,在这个站点点击多个...

  • 浅谈Web会话

    会话是大家开发Web应用的常用技术,那么会话是什么,会话的用途还有工作原理又是什么? 在web应用中,作为客户端的...

  • Django-cookie&session

    会话跟踪 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cook...

  • web会话技术

    会话技术概述 为了实现某一个功能(购物),浏览器和服务器之间可能会产生多次的请求和响应。从打开浏览器访问服务器开始...

网友评论

      本文标题:3种Web会话管理方式

      本文链接:https://www.haomeiwen.com/subject/evxzektx.html