首页 > 其他分享 >session,cookie 和 token 三个概念的区别和联系

session,cookie 和 token 三个概念的区别和联系

时间:2023-08-28 17:00:59浏览次数:32  
标签:存储 Token 用户 token session cookie Cookie 服务器

Session(会话):
"Session"是一种服务器端的状态管理机制,用于跟踪和存储用户在Web应用程序中的状态信息。当用户访问应用程序时,服务器会为每个会话分配一个唯一的会话ID。这个会话ID通常通过"cookie"或URL参数在用户的浏览器和服务器之间进行传递。会话数据存储在服务器上,可以包含用户的身份信息、权限、购物车内容等。

Cookie(HTTP Cookie):
"Cookie"是一种在用户浏览器和Web服务器之间传递数据的小型文本文件。服务器可以通过HTTP响应的"Set-Cookie"头将cookie发送到用户的浏览器,然后浏览器会在后续的请求中通过"Cookie"头将cookie值发送回服务器。Cookie常用于存储持久化数据,比如用户的首选语言、登录状态等。

Token(令牌):
"Token"是一种代表用户身份和权限的数据结构。它可以是一串加密的字符串,通常包含有关用户的信息,比如用户名、角色和过期时间。Token通常是无状态的,这意味着服务器不需要在后端存储任何关于令牌本身的信息。令牌可以通过各种方式传递,如HTTP头部、URL参数或"cookie"。

区别与联系:

  • 位置与存储:

    • Session数据存储在服务器上,客户端只保留一个会话ID,通常通过"cookie"传递。
    • Cookie存储在客户端浏览器中,可以包含各种数据,但大小有限制。
    • Token也存储在客户端,通常是作为HTTP头部的一部分发送到服务器。
  • 数据内容:

    • Session通常包含敏感数据,因为它存储在服务器上。
    • Cookie可以包含持久性数据,如用户偏好设置。
    • Token通常包含用户的身份信息和权限声明。
  • 状态与无状态:

    • Session是有状态的,服务器需要存储会话数据。
    • Cookie和Token是无状态的,服务器不需要在后端存储相关数据。
  • 使用场景举例:

    • 假设有一个电子商务网站:
      • 当用户登录时,服务器会创建一个会话,并将用户信息存储在会话中。用户的购物车内容和登录状态都存储在会话中。
      • 为了跟踪用户,服务器会在用户的浏览器中设置一个包含会话ID的cookie。这样,用户在浏览网站的不同页面时,服务器可以识别会话。
      • 在某些情况下,网站可能会使用Token来实现单点登录(SSO)。用户登录后,服务器会生成一个Token,将其加密并发送给客户端。客户端在后续请求中通过HTTP头部将Token发送给服务器,从而允许用户访问受保护的资源,无需再次输入凭据。

总结:
"Session"、"cookie"和"token"都在Web应用程序中发挥着重要作用,但它们的用途和特点各不相同。"Session"用于存储服务器端状态数据,"cookie"用于在客户端存储小量数据,"token"用于在客户端和服务器之间传递用户身份和权限信息。根据应用程序的需求和安全性要求,可以灵活地选择如何使用这些机制来构建强大的用户认证和授权系统。

标签:存储,Token,用户,token,session,cookie,Cookie,服务器
From: https://www.cnblogs.com/sap-jerry/p/17662793.html

相关文章

  • python+playwright 学习-78 获取浏览器cookies
    前言playwright操作浏览器上的页面后,后续如果想结合其他的框架操作接口(如:requests),可以直接获取到浏览器的cookies。context.cookies()获取浏览器cookies使用示例fromplaywright.sync_apiimportsync_playwright,expectwithsync_playwright()asp:browser=......
  • jsessionid释疑解惑
    在web应用的开发中我们会经常看到这样的url:http://www.xxx.com/xxx_app;jsessionid=xxxxxxxxxx?a=x&b=x...。这跟一般的url基本一样,只有一个地方有区别,那就是“;jessionid=xxxxxxxx”。这个参数有时候有,有时候又没有,说它是参数可又跟一般传递的参数不同,它是紧跟在url后面用分号来分......
  • IE8 中 session 管理的变化
    Sessioncookie被广泛用来做用户身份校验。相比IE7,IE8的Session管理有很大变化,这是Web开发者需要注意的。IE7中,同一个窗口(IE进程)共享一个session。IE8中,所有打开的IE窗口(IE进程)共享一个session。除非,用户通过菜单文件>新建会话......
  • 用P3P解决IE的iframe中每次跨域请求产生新session的问题
    初来乍到,看到一篇cookie夸域的帖子,觉的他只是解决了跨二级域名的问题,自己曾经作过一个企业应用的sso,其中用到的p3p解决了cookie跨域的存取。 第一次发帖,请各位高手多多指教 首先介绍第一方Cookie和第三方cookie: 第一方Cookie是来自当前正在查看的网站,或者发送到当前正在查看的......
  • Authorization token types All In One
    AuthorizationtokentypesAllInOneAccesstokensIDtokensSelf-signedJWTsRefreshtokensFederatedtokensBearertokens令牌类型访问令牌ID令牌自签名JWT刷新令牌联合令牌不记名令牌本文不讨论API密钥或客户端ID,这些被视为凭据。OAuthOAuth2.0......
  • hibernate——Session接口中定义的saveOrUpdate()方法浅析
    Session接口中定义的saveOrUpdate方法,集合了save和update方法,根据对象的状态来选择是进行保存还是更新,那它是怎么判断当前对象的状态的呢?API中对这个方法是这样说的,它是根据一个unsaved-value来决定的。这个值是在映射文件中的<id>标签中的一个属性。<id>标签表示的是表的主键,若主......
  • 用拦截器实现session登录
    这个功能是这样的,用户在访问网站时,先要进行登录,即要访问处理登录的Action,若没有登录,即访问除了登录的Action之外的Action,则会被拦截器拦截,跳转到错误页面,提示用户还没有进行登录。所以这个拦截器的作用是如果是登录,即请求的是LoginAction,那么就不拦截这个请求,让其通过拦截器,进行登......
  • 学会Python Requests库+Cookies模拟自动登录!
    importrequestsurl="https://my.cheshi.com/user/"headers={"User-Agent":"Mozilla/5.0(Macintosh;IntelMacOSX10_15_7)AppleWebKit/537.36(KHTML,likeGecko)Chrome/116.0.0.0Safari/537.36"}res=requests.get(......
  • localstorage本地存储及token,vuex刷新数据丢失问题⚡⚡⚡
    1.vuex和axios安装,引入,使用1.1vuexa安装和使用vuex3.x版本的官网安装教程:安装|Vuexvuex4.x版本的官网安装教程:安装|Vuexnpminstallvuex--save2.在src下新建文件夹store,并在文件夹中新建文件index.js,如下:importVuexfrom'vuex'//引入user模块化modules......
  • pd.read_csv pandas.errors.ParserError: Error tokenizing data. C error: Expected
    df1=pd.read_csv(path1,encoding="utf-8",chunksize=50000,error_bad_lines=False)尽管提示:Warning(fromwarningsmodule):File"D:\Python37\lib\idlelib\run.py",line550exec(code,self.locals)FutureWarning:Theerror_bad_linesargu......