首页 > 其他分享 >Cookie、Session、Token三者的区别

Cookie、Session、Token三者的区别

时间:2024-10-23 23:22:20浏览次数:1  
标签:登录 用户 Token Session Cookie 服务器

在数字世界的茫茫人海中,每一次点击、每一次登录,都伴随着身份认证与数据安全的较量。今天咱要来一场惊心动魄的技术探秘之旅,今天我要带你深入探索Web开发中那三个绕不开的名字——Cookie、Session、Token,它们不仅仅是技术名词,更是构建安全、高效用户交互的基石,看看它们在接口鉴权、用户登录等场景中究竟有着怎样的神奇魔力!

 

想象一下,你正在构建一个庞大而精彩的 Java 应用世界,就像一个充满奇幻色彩的王国。在这个王国里,用户的身份认证和权限管理就如同守护王国的坚固城墙。而 Cookie、Session 和 Token 就是三把关键的钥匙,它们各自有着独特的能力,决定着谁能进入这个王国,以及在王国里能做什么。

 

首先,让我们来认识一下 Cookie。Cookie 就像是一个小巧的魔法口袋,它可以被服务器放在用户的浏览器里。当用户再次访问同一个网站时,这个魔法口袋就会被带上,让服务器能够认出这个用户。比如说,当你登录一个购物网站后,服务器可能会在你的浏览器里放一个 Cookie,里面记录着你的登录状态。下次你再打开这个网站时,浏览器会自动把这个 Cookie 发送给服务器,服务器一看,就知道是你来了,然后就可以给你展示个性化的页面。

 

实现步骤呢,也很简单。服务器在用户登录成功后,设置一个 Cookie,包含一些关键信息,比如用户 ID。然后,每次用户请求页面时,浏览器会自动把这个 Cookie 发送给服务器。服务器读取 Cookie 中的信息,就可以判断用户的身份。

接着,我们来看看 Session。Session 就像是一个魔法宝箱,它存在于服务器端。当用户登录成功后,服务器会为这个用户创建一个独特的 Session,并在里面存放用户的相关信息。这个 Session 有一个唯一的标识符,就像一把钥匙。服务器把这个标识符发送给用户的浏览器,通常是放在 Cookie 里或者作为 URL 的一部分。当用户再次请求时,带着这个标识符,服务器就能找到对应的 Session,从而知道用户是谁。

 

例如,在一个在线论坛中,用户登录后,服务器创建一个 Session,记录用户的用户名、权限等信息。用户在浏览不同的页面时,服务器通过 Session 标识符找到对应的 Session,确保用户能够进行相应的操作。

 

✨最后,登场的是 Token。Token 就像是一个神秘的魔法令牌,它是由服务器生成的一串字符,包含了用户的身份信息。与 Cookie 和 Session 不同的是,Token 可以在不同的系统之间传递,非常灵活。比如,当你使用一个第三方登录服务登录某个应用时,服务器会给你一个 Token,这个 Token 可以在不同的服务器之间传递,让其他服务器也能识别你的身份。️

 

实现 Token 的方式通常是在用户登录成功后,服务器根据用户的信息生成一个 Token,然后把这个 Token 返回给客户端。客户端可以把 Token 存储在本地,比如浏览器的 localStorage 中。每次请求时,把 Token 放在请求头中发送给服务器。服务器读取 Token 中的信息,进行身份验证。

那么,在接口鉴权和用户登录场景中,它们又各自有着怎样的表现呢?在用户登录时,Cookie 和 Session 可以快速地在同一个服务器上进行身份验证。但是,如果涉及到多个服务器或者分布式系统,Token 就更加合适,因为它可以在不同的服务器之间传递,实现统一的身份认证。而在接口鉴权方面,Token 可以通过加密和签名等方式,确保请求的安全性和合法性。Cookie 和 Session 也可以通过一些安全措施来保护用户信息,但相对来说,Token 在安全性方面更有优势。

怎么样,小伙伴们?现在是不是对 Cookie、Session 和 Token 有了更深刻的理解呢?在你的 Java 开发之旅中,根据不同的场景选择合适的身份认证方式,就像选择一把合适的钥匙,打开成功的大门!

标签:登录,用户,Token,Session,Cookie,服务器
From: https://www.cnblogs.com/IT-Evan/p/18487814

相关文章

  • 青龙面板账密登录搭建并对接无界实现自动更新ck,没有rabbitpro token者的福音来了,可替
    现在我们就开始拉取账密登录。首先还是在已经配置好docker的服务器中进行本地有amd机子的话最好搭在本地,基本不需要验证码如果没有那么就搭在amd的云服务器上面基本就前两次登录需要验证码,后续则不需要,那么下面开始我们正文首先在finshell里面输入以下代码(arm机子就不......
  • 会话管理-帮你搞懂cookie(Html版本)
    前端JavaScript中的cookie是一种用于在浏览器和服务器之间传递数据的机制。它们通常用于跟踪用户的会话信息,如登录状态、购物车内容等。Cookie的使用非常广泛,几乎所有的web应用程序都会使用到cookie来保存用户信息或者偏好设置‌。【注:dom和jdom的概念和转换看这篇-->】后端入......
  • 跨站脚本攻击XSS以及Cookie如何实现用户管理
            跨站脚本攻击(Cross-SiteScripting,简称XSS)是一种常见的网络安全漏洞,通常发生在Web应用中。攻击者通过在网页中注入恶意脚本,这些脚本会自动执行,从而达到攻击的目的。XSS攻击可以导致数据泄露、会话劫持、篡改页面内容等多种危害。XSS攻击的类型反射型XSS(Refl......
  • keycloak~token配置相关说明
    会话有效期在Keycloak中,"SSOSessionIdle"和"SSOSessionMax"是用于配置单点登录(SSO)会话的两个参数。这两个参数影响用户在系统中的会话过期和最大有效时间。SSOSessionIdle(单点登录会话空闲时间):定义:表示用户在系统中没有活动的时间阈值。如果用户在这段时间内没......
  • 前后端实现双Token无感刷新用户认证
    前后端实现双Token无感刷新用户认证本文记录了使用双Token机制实现用户认证的具体步骤,前端使用的Vue,后端使用SpringSecurity和JWT双Token分别指的是AccessToken和RefreshTokenAccessToken:每次请求需要携带AccessToken访问后端数据,有效期短,减少AccessToken泄露带来的风险Refres......
  • LocalStorage和SessionStorage存储
    认识Storage◼WebStorage主要提供了一种机制,可以让浏览器提供一种比cookie更直观的key、value存储方式:cookie:服务器返回自动返回一个cooki,浏览器将cookie存储到本地,浏览器再发送请求自动把cooki传递过去localStorage:本地存储,提供的是一种永久性的存储方法,在关闭掉网页......
  • ASP.NET Cookie身份认证
    1.添加Cookie身份验证方案services.AddAuthentication(option=>{option.DefaultAuthenticateScheme=CookieAuthenticationDefaults.AuthenticationScheme;option.DefaultChallengeScheme=CookieAuthenticationDefaults.AuthenticationScheme;}).AddCookie(Coo......
  • 【论文阅读笔记】An Image is Worth 1/2 Tokens After Layer 2: Plug-and-Play Infere
    论文地址:https://arxiv.org/pdf/2403.06764代码地址:https://github.com/pkunlp-icler/FastV目录IntroductionInefficientVisualAttentioninVLLMsPreliminaries两种分数结果分析FastVOverviewRe-rankandFilteringmodule(core)ThoughtIntroduction现象(问题):大多数LVL......
  • 位置、Cookie、缓存:华为鸿蒙 ArkWeb 数据管理全攻略
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。引言ArkWeb是华为鸿蒙系统提......
  • 登录功能-Java实现token的生成与验证
    一、token与cookie相比较的优势1、支持跨域访问,将token置于请求头中,而cookie是不支持跨域访问的;2、无状态化,服务端无需存储token,只需要验证token信息是否正确即可,而session需要在服务端存储,一般是通过cookie中的sessionID在服务端查找对应的session;3、无需绑定到一个特殊的身份......