Session Cookie Jwt Token常见web授权

2024-08-25 20:20

本文主要是介绍Session Cookie Jwt Token常见web授权,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基于分布式系统、同公司内、同一个 redis 作为存储,这个是目前主要的用法,去找开源框架都是这个逻辑;对外开放等使用参考 OAuth 2.0

能够标识出用户是谁,安全性相对高一些,就是好的方案。

Cookie

Set 和 Get:

  • 服务端控制 Set: 服务器可以通过 HTTP 响应头中的 Set-Cookie 字段来设置 Cookie。如果浏览器没有找到相应的 Cookie,服务器通常会设置一个默认的 Cookie。——通过服务端渲染,返回给前端的代码也可以拼接上前端主动setCookie也行
  • 浏览器处理: 浏览器接收到 Set-Cookie 后会自动存储和管理这些 Cookie。当浏览器再次向同一服务器发送请求时,它会自动将所有相关 Cookie 附加到请求头中。

Session

会话 ID:

  • 服务器为每个用户创建一个唯一的会话 ID,并将其存储在服务器端(如redis、Db等)。
  • 会话 ID 通常会被包装在一个名为 sessionid 的 Cookie 中,这样浏览器在每次请求时都会自动携带这个 ID。
  • 服务器通过会话 ID 来识别用户,并获取与该用户相关的会话数据。

JWT(JSON Web Token)

用户信息加密字符串:

  • JWT 是一种用于在网络应用间传递声明的开放标准(RFC 7519)。它由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。
  • JWT 的载荷部分可以包含用户的身份信息和其他相关数据。这些数据在服务器端进行加密处理后生成 JWT 字符串。
  • 由于 JWT 是自包含的,因此可以减少对数据库的查询。但是,JWT 不易于实现下线处理,因为一旦签发,它将在其过期时间之前一直有效。为了解决这个问题,通常会在服务器端(如 Redis)存储一份 JWT 的副本,并设置相应的过期时间。当需要强制用户下线时,只需删除 Redis 中的对应记录即可。

Token(跟 SessionId 差不多)

服务端生成和 Redis 存储:

  • Token 是一种用于身份验证的字符串,通常由服务器生成并返回给客户端。
  • 与 JWT 不同,Token 可以是任何格式和长度的字符串,只要它能够唯一标识用户即可。
  • 为了提高安全性和可扩展性,可以将 Token 存储在 Redis 等内存数据库中。这样,当用户登录或刷新 Token 时,服务器只需更新 Redis 中的记录即可。
  • 在请求处理过程中,服务器可以通过检查 Redis 中是否存在对应的 Token 来验证用户的身份。同时,Redis 的高性能和分布式特性也使得 Token 验证过程更加高效和可靠。

总结

  1. Session 和 Cookie 在分布式环境下的处理
    • 传统的单体应用中,session 数据通常存储在服务器端。但在分布式系统中,为了支持水平扩展和数据共享,可以将 session 数据存储在像 Redis 这样的集中式存储中。
  2. JWT 与 Redis 的结合使用
    • JWT(JSON Web Tokens)本身包含所有认证信息,不需要服务器查询数据库验证,但其过期管理和注销机制较弱。为了解决这些问题,通常在 Redis 中货数据存储 JWT 的黑名单来管理过期时间和下线操作。——这就很没意思(快和token一个月i死了)
  3. Token 的管理和免登录功能
    • Token后端一般存储在 Redis 中进行统一管理。对于需要实现长时间免登录的功能,可以通过设置一个长期有效的 cookie(例如30天有效期),token 脱离了 cookie 的安全校验,跨域更加方便

jwt web 场景下意义就不是很大了,选择用 token 有些情况下也是会和 cookie 一起搭配使用了;

这篇关于Session Cookie Jwt Token常见web授权的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106558

相关文章

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

springboot security使用jwt认证方式

《springbootsecurity使用jwt认证方式》:本文主要介绍springbootsecurity使用jwt认证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录前言代码示例依赖定义mapper定义用户信息的实体beansecurity相关的类提供登录接口测试提供一

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

MySQL常见的存储引擎和区别说明

《MySQL常见的存储引擎和区别说明》MySQL支持多种存储引擎,如InnoDB、MyISAM、MEMORY、Archive、CSV和Blackhole,每种引擎有其特点和适用场景,选择存储引擎时需根... 目录mysql常见的存储引擎和区别说明1. InnoDB2. MyISAM3. MEMORY4. A

web网络安全之跨站脚本攻击(XSS)详解

《web网络安全之跨站脚本攻击(XSS)详解》:本文主要介绍web网络安全之跨站脚本攻击(XSS)的相关资料,跨站脚本攻击XSS是一种常见的Web安全漏洞,攻击者通过注入恶意脚本诱使用户执行,可能... 目录前言XSS 的类型1. 存储型 XSS(Stored XSS)示例:危害:2. 反射型 XSS(Re

前端bug调试的方法技巧及常见错误

《前端bug调试的方法技巧及常见错误》:本文主要介绍编程中常见的报错和Bug,以及调试的重要性,调试的基本流程是通过缩小范围来定位问题,并给出了推测法、删除代码法、console调试和debugg... 目录调试基本流程调试方法排查bug的两大技巧如何看控制台报错前端常见错误取值调用报错资源引入错误解析错误

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::