SecurityContextHolder 和 Redis 的区分

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Despite both being involved in session management, they serve distinct purposes: `SecurityContextHolder` for security context and Redis for broader data caching and management.

在跟着博主三更草堂学习spring- security的课程中。我发现了我作为一个初学者可能需要理解知识点(如题)。

下载.png

SecurityContextHolderRedis 各自的作用:

  1. SecurityContextHolder:

    • SecurityContextHolder 是 Spring Security 框架提供的一个类,用于在应用程序中保存当前已经被验证的用户的安全上下文信息。
    • 通过 SecurityContextHolder,可以访问当前用户的身份信息,权限信息以及其他相关的安全信息,以便在应用程序中进行访问控制和权限管理。
    • 这个上下文信息通常在应用程序的生命周期中持续存在,直到用户退出或会话结束。
  2. Redis:

    • Redis 是一个开源的内存数据库,通常被用作缓存、消息代理和键值存储。
    • 在 Java Web 应用程序中,Redis 经常被用来缓存数据,例如用户会话信息、页面内容或其他需要频繁读取的数据。
    • 使用 Redis 缓存可以提高应用程序的性能和扩展性,减轻数据库负担,并且可以实现分布式缓存,使多个应用程序实例可以共享缓存数据。

SecurityContextHolderRedis 分别存储的信息:

  1. SecurityContextHolder:

    • SecurityContextHolder 是 Spring Security 框架中的一个类,用于在应用程序中保存当前已验证用户的安全上下文信息。
    • 这个上下文信息通常包括当前用户的身份信息、权限信息以及其他相关的安全信息。
    • 以下是一些可能存储在 SecurityContextHolder 中的信息:
      • 认证用户的身份信息(例如用户名、用户ID等)。
      • 认证用户的权限信息(例如角色、权限列表等)。
      • 认证用户的认证状态(已认证、未认证等)。
  2. Redis:

    • Redis 是一个高性能的键值存储数据库,通常用作缓存、消息代理和数据存储。
    • 在 Java Web 应用程序中,Redis 经常被用来缓存数据、会话信息以及其他需要频繁读取或共享的数据。
    • 以下是一些可能存储在 Redis 中的信息:
      • 会话信息:包括用户的认证状态、会话标识符、会话数据等。
      • 缓存数据:存储经常访问但不经常更改的数据,例如页面内容、计算结果等。
      • 分布式锁:用于处理并发访问和确保数据的一致性。
      • 消息队列数据:用于实现异步处理和事件驱动架构。

为什么有 SecurityContextHolder 还需要 Redis

@Override
    public ResponseResult logout() {
   
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        LoginUser loginUser = (LoginUser) authentication.getPrincipal();
        Long userid = loginUser.getUser().getId();
        redisCache.deleteObject("login:"+userid);
        return new ResponseResult(200,"退出成功");
    }

SecurityContextHolder 主要用于存储当前已验证用户的安全上下文信息,包括身份和权限信息,以便进行访问控制和权限管理。而 Redis 则用于存储缓存数据、会话信息以及其他需要频繁读取或共享的数据,以提高应用程序的性能和可扩展性。

因此,在代码实现执行登出操作时,删除 Redis 中的相关信息。不需要删除 SecurityContextHolder 的相关信息。(清除缓存,不需要清除对应用户的权限)

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
7月前
|
存储 缓存 NoSQL
Redis的主要用途是什么?
【4月更文挑战第2天】Redis是多功能工具,常用于缓存加速、轻量级数据库、消息代理(发布/订阅)、分布式锁、计数器、数据结构算法实现、实时系统支撑及限流控制。其丰富的数据类型和高效操作支持多种应用场景,提升系统性能。
308 2
|
缓存 NoSQL Redis
【Redis 系列】redis 学习十六,redis 字典(map) 及其核心编码结构
【Redis 系列】redis 学习十六,redis 字典(map) 及其核心编码结构
104 0
|
5月前
|
数据库 NoSQL Redis
Redis访问模式
【7月更文挑战第17天】
49 2
|
6月前
|
机器学习/深度学习 存储 NoSQL
【Redis】 关于Redis列表类型
【Redis】 关于Redis列表类型
|
6月前
|
NoSQL Redis
【Redis】 常见的基本全局命令
【Redis】 常见的基本全局命令
|
7月前
|
存储 数据采集 NoSQL
Redis入门到通过之Redis实现全局唯一id
Redis入门到通过之Redis实现全局唯一id
128 0
|
消息中间件 存储 缓存
redis 为什么可以做缓存?redis 的作用有哪些?redis 常见的使用场景
redis 为什么可以做缓存?redis 的作用有哪些?redis 常见的使用场景
574 0
|
7月前
|
存储 NoSQL 算法
redis存储什么类型的数据?redis分布式锁怎么实现的?
redis存储什么类型的数据?redis分布式锁怎么实现的?
|
7月前
|
缓存 运维 NoSQL
Redis | Redis 命令分类
Redis | Redis 命令分类
96 0
|
监控 负载均衡 NoSQL
redis的四种模式
redis的四种模式
497 1