shiro实战系列(十一)之Caching

简介: Shiro 开发团队明白在许多应用程序中性能是至关重要的。Caching 是从第一天开始第一个建立在 Shiro 中的一流功 能,以确保安全操作保持尽可能的快。   然而,Caching 作为一个概念是 Shiro 的基本组成部分,实现一个完整的缓存机制是安全框架核心能力之外的事情。

Shiro 开发团队明白在许多应用程序中性能是至关重要的。Caching 是从第一天开始第一个建立在 Shiro 中的一流功 能,以确保安全操作保持尽可能的快。   然而,Caching 作为一个概念是 Shiro 的基本组成部分,实现一个完整的缓存机制是安全框架核心能力之外的事情。 为此,Shiro 的缓存支持基本上是一个抽象的(包装)API,它将“坐”在一个基本的缓存机制产品(例如,Ehcache, OSCache,Terracotta,Coherence,GigaSpaces,JBossCache 等)之上。这允许 Shiro 终端用户配置他们喜欢的任何缓 存机制。

 

(1)Caching API Shiro 有三个重要的缓存接口: CacheManager - 负责所有缓存的主要管理组件,它返回 Cache 实例。

(2) Cache - 维护 key/value 对。

(3)CacheManagerAware - 通过想要接收和使用 CacheManager 实例的组件来实现。   CacheManager 返回 Cache 实例,各种不同的 Shiro 组件使用这些 Cache 实例来缓存必要的数据。任何实现了 CacheManagerAware 的 Shiro 组件将会自动地接收一个配置好的 CacheManager,该 CacheManager 能够用来获取 Cache 实例。 

 

 Shiro的 SecurityManager 实现及所有 AuthorizingRealm实现都实现了 CacheManagerAware。如果你在 SecurityManager 上设置了 CacheManger,它反过来也会将它设置到实现了 CacheManagerAware 的各种不同的 Realm 上(OO delegation)。例如,在 shiro.ini 中:  

我们拥有一个立即可用的 EhCacheManager 实现,因此,如果你想的话,今天都可以使用。相反地,你可以实现自 己的 CacheManager(如使用 Coherence 等),并像上面那样配置它,你会取得很好的效果的。

 

Authorization Cache Invalidation

最后请注意 AuthorizingRealm 有一个 clearCachedAuthorizationInfo 方法能够被子类调用,用来清除特殊账户缓存的 授权信息。它通常被自定义逻辑调用,如果与之匹配的账户授权数据发生了改变(来确保下次的授权检查能够捕获 新数据)。

 

目录
相关文章
|
5月前
|
安全 Java 数据安全/隐私保护
SpringBoot原理分析 | 安全框架:Security
SpringBoot原理分析 | 安全框架:Security
22 0
|
7月前
|
存储 缓存 安全
01 Shrio简介
01 Shrio简介
17 0
|
JSON 安全 算法
Spring Security系列教程27--Spring Security实现CAS单点登录--搭建CAS服务端
前言 在上一章节中,一一哥 给各位介绍了单点登录的概念、执行流程原理,并且给大家介绍了CAS单点登录解决方案,在CAS解决方案中,我们需要搭建CAS服务端和CAS客户端,本文就开始给大家介绍如何实现CAS服务端。在这里,我给大家介绍一个开源的CAS服务端模板cas-overlay-template,接下来请跟我一起看看怎么实现吧。 一. 搭建CAS服务器 1. 概述 为了测试我前面讲解的CAS请求执行流程,我们需要搭建一个CAS测试环境,本篇内容主要是带领大家搭建一个CAS Server服务端环境。搭建CAS Server环境,需要依赖如下环境: ● JDK1.8+ ● Maven3.6+
1269 0
|
安全 Java 数据安全/隐私保护
Spring Security系列教程28--Spring Security实现CAS单点登录下篇--搭建CAS客户端
前言 在上一章节中,一一哥 带各位搭建了CAS Server端项目,也就是我们构建了一个统一的单点登录认证中心,接下来就可以搭建CAS客户端项目,然后实现客户端与服务端之间的交互认证,从而完成单点登录。 接下来各位就跟着 壹哥 搭建CAS客户端,最终把单点登录实现出来吧! 一. 搭建CAS客户端 1. 创建新项目 我们在之前的Spring Security项目中,创建一个新的module模块,作为CAS Client项目,如下图。 2. 引入依赖 然后在这个模块的pom.xml文件中,引入相关依赖。 <dependencies> <dependency>
363 0
|
存储 安全 Java
Spring Security系列教程26--Spring Security实现CAS单点登录上篇--概述
前言 从本章节开始,一一哥 会给各位讲解一个很常见也很重要的知识点,就是单点登录!现在的大型分布式项目,基本都会考虑实现单点登录,而且现在网上也有很多单点登录的实现方案、开源项目,但是针对单点登录的实现原理,讲解的并不是很细。你可以参考其他开源案例项目,再结合本系列文章,就可以对单点登录有较为深入的认识。 如果你对单点登录是什么也不知道,那就先看本文,了解单点登录的含义吧。 一. 单点登录 1. 产生背景 很早的时候,一家公司里可能只有一个Server,后来慢慢的Server开始变多了,而每个Server都要进行注册登录,退出的时候又要一个个退出,用户体验很不好!比如,我们想访问百度系列,要
284 0
|
JSON 弹性计算 安全
Spring Security系列教程07--前后端分离时的安全处理方案
前言 在前面的几个章节中,一一哥 带大家学会了如何利用Spring Security来保护我们的Web项目,以及3种认证方式。你可能会觉得,Spring Security没啥东西啊,代码也不复杂呀!别急,我们的学习是渐进的,Spring Security的内容和功能都多着呢,我们要Get的点也多着呢。 今天 一一哥 就带大家来学习一下在前后端分离的开发模式下,如何保护我们项目的安全。有的小伙伴会问,啥是前后端分离啊?如果你对此一无所知,一一哥 只能建议你先查阅一下相关资料,本文 一一哥 只能带你简单了解一下前后端分离的概念,毕竟今天我们是在讲解如何保证安全性的。 还有的小伙伴会说,前后端分离有
761 0
|
存储 前端开发 安全
Security RememberMe原理分析
Security RememberMe原理分析
157 0
|
安全 Java 数据库
跟我学spring security系列文章第一章 实现一个基本的登入
今天,正式介绍一下Java极客技术知识星球 SpringBoot 精髓之 SpringBoot-starter Spring 源码学习(八) AOP 使用和实现原理 Java:前程似锦的 NIO 2.0 java中List元素移除元素的那些坑
跟我学spring security系列文章第一章 实现一个基本的登入
|
存储 缓存 安全
五分钟带你玩转SpringSecurity(四)配置全解析,带你掌握security核心要点
五分钟带你玩转SpringSecurity(四)配置全解析,带你掌握security核心要点
222 0