shiro实战系列(十五)之Spring集成Shiro

Shiro 的 JavaBean 兼容性使得它非常适合通过 Spring XML 或其他基于 Spring 的配置机制。Shiro 应用程序需要一个具 有单例 SecurityManager 实例的应用程序。请注意,这不会是一个静态的单例,但应该只有一个应用程序能够使用 的实例,无论它是否是静态单例的。

Web Applications

Shiro 拥有对 Spring Web 应用程序的一流支持。在 Web 应用程序中,所有 Shiro 可访问的万恶不请求必须通过一个 主要的 Shiro 过滤器。该过滤器本身是极为强大的,允许临时的自定义过滤器链基于任何 URL 路径表达式执行。   在 Shiro 1.0 之前,你不得不在 Spring web 应用程序中使用一个混合的方式,来定义 Shiro 过滤器及所有它在 web.xml 中的配置属性,但在 Spring XML 中定义 SecurityManager。这有些令人沮丧,由于你不能把你的配置固定在一个地方, 以及利用更为先进的 Spring 功能的配置能力,如 PropertyPlaceholderConfigurer 或抽象 bean 来固定通用配置。   现在在 Shiro 1.0 及以后版本中,所有 Shiro 配置都是在 Spring XML 中完成的,用来提供更为强健的 Spring 配置机制。   以下是如何在基于 Spring web 应用程序中配置 Shiro:

web.xml

除了其他 Spring web.xml 中的元素(ContextLoaderListener,Log4jConfigListener 等等),定义下面的过滤器及过滤器 映射:

applicationContext.xml 在你的 applicationContext.xml 文件中,定义 web 支持的 SecurityManager 和‘shiroFilter‘ bean 将会被 web.xml 引用

Enabling Shiro Annotations

在独立应用程序和 Web 应用程序中,你可能想为安全检查使用 Shiro 的注释(例如,@RequiresRoles, @RequiresPermissions 等等)。这需要 Shiro 的 Spring AOP 集成来扫描合适的注解类以及执行必要的安全逻辑。   以下是如何使用这些注解的。只需添加这两个 bean 定义到 applicationContext.xml 中:

Secure Spring Remoting

Shiro 的 Spring 远程支持有两部分:配置客户端远程调用和配置服务器接收及处理远程调用。

Server-side Configuration 、

当一个远程调用方法到达启用 Shiro 的服务器时,与该 RPC 调用关联的 Subject 在线程执行时必须绑定到访问的接收 线程。这是通过在 applicationContext.xml 中定义 SecureRemotInvocationExecutor bean 来完成的

当你定义这个 bean 之后,你必须将其插入到任何你正在用来 export/expose 你服务的远程 Exporter。Exporter 实现 是根据使用的远程处理机制/协议来定义的。请参阅 Sping 的 Remoting 章节关于定义 Exporter bean 的内容。   例如,如果使用基于 HTTP 的远程调用(注意 secureRemoteInvocationExecutor bean 的相关属性):

Client-side Configuration

当远程调用被执行后,Subject 的识别信息必须附加到远程调用的负载上使服务器知道是谁作出了该调用。若客户端 是一个基于 Spring 的客户端,该关联是通过 Shiro 的 SecureRemoteInvocationFactory 来完成的:

在你定义好这个 bean 后,你需要将它插入到你正在使用的基于特定协议的 Spring remoting ProxyFactoryBean 中。   例如,如果你正在使用基于 HTTP 的远程调用(注意上面定义的 secureRemoteInvocationFactory bean 的相关属性):

原文地址:https://www.cnblogs.com/youcong/p/9194070.html

时间: 2024-11-09 09:11:42

shiro实战系列(十五)之Spring集成Shiro的相关文章

shiro实战系列(十二)之常用专业术语

请花 2 分钟来阅读和理解它--这很重要.真的.这里的术语和概念在文档的任何地方都被涉及到,它将在总体上 大大简化你对 Shiro 和安全的理解.   由于所使用的术语使得安全可能令人困惑.我们将通过澄清一些核心概念使生活更容易,你将会看到 Shiro API 是如 何很好地反映了它们: (1)Authentication 身份验证是验证 Subject 身份的过程--实质上是证明某些人是否真的是他们所说的他们是谁.当认证尝试成 功后,应用程序能够相信该 subject 被保证是其所期望的.  

Shiro学习总结(10)——Spring集成Shiro

1.引入Shiro的Maven依赖 [html] view plain copy <!-- Spring 整合Shiro需要的依赖 --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.2.1</version> </dependency> <dep

shiro实战系列(十)之Subject

毫无疑问,在 Apache Shiro 中最重要的概念就是 Subject.'Subject'仅仅是一个安全术语,是指应用程序用户的特定 安全的"视图".一个 Shiro Subject 实例代表了一个单一应用程序用户的安全状态和操作. 这些操作包括: authentication(login) authorization(access control) session access logout 我们原本希望把它称为"User"由于这样"很有意义&quo

springboot系列十五、springboot集成PageHelper

一.介绍 项目中经常会遇到分页,PageHelper为我们解决了这个问题.本质上实现了Mybatis的拦截器,作了分页处理. 二.配置PageHelper 1.引入依赖 pagehelper-spring-boot-starter对了pagehelper做了封装,减少 了配置文件,只需要在yml添加就能使用. <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelpe

S3C2416裸机开发系列十五_GCC下uCOS的移植(1)

S3C2416裸机开发系列十五 GCC下uCOS的移植(1) 象棋小子    1048272975 操作系统是用来管理系统硬件.软件及数据资源,控制程序运行,并为其它应用软件提供支持的一种系统软件.根据不同的种类,又可分为实时操作系统.桌面操作系统.服务器操作系统等.对于一些小型的应用,对系统实时性要求高,硬件资源有限等的情况下,应尽量避免使用复杂庞大的操作系统(如Linux),使用小型的实时操作系统(如uCOS)更能满足应用的需求.笔者此处就uCOS-II的移植作一个简单的介绍. 1. 代码准

S3C2416裸机开发系列十五_GCC下uCOS的移植(2)

S3C2416裸机开发系列十五 GCC下uCOS的移植(2) 象棋小子    1048272975 4. uCOS配置 uCOS是可裁减实时操作系统,可以根据实际的应用对内核未使用到的功能进行裁减,以进一步节省系统宝贵的硬件资源,通常可用的uCOS-II内核代码在6K~26K,这在uCOS-II配置文件os_cfg.h中进行配置,这个配置文件在源码目录为os_cfg_r.h,从目录中拷贝添加到uCOS/uCOS-II/Cfg目录中,并重命名为os_cfg.h. #ifndef OS_CFG_H

spring 集成shiro 之 自定义过滤器

出自:http://blog.csdn.net/shuishouhcd/article/details/9077379 最近一段时间,我一直在将shiro集成到我的一个项目中,用作认证和授权处理. shiro对我来说是个新东西,以下是我学习过的内容: http://shiro.apache.org/authorization.html http://www.cnblogs.com/skyme/archive/2011/09/11/2173760.html  系列 http://www.infoq

SpringBoot系列十二:SpringBoot整合 Shiro

1.概念:SpringBoot 整合 Shiro 2.具体内容 Shiro 是现在最为流行的权限认证开发框架,与它起名的只有最初的 SpringSecurity(这个开发框架非常不好用,但是千万不要 以为 SpringSecurity 没有用处,它在 SpringCloud 阶段将发挥重大的作用).但是现在如果要想整合 Shiro 开发框架有一点很遗憾, SpringBoot 没有直接的配置支持,它不像整合所谓的 Kafka.Redis.DataSource,也就是说如果要想整合 Shiro 开

Spring Boot (十五): Spring Boot + Jpa + Thymeleaf 增删改查示例

这篇文章介绍如何使用 Jpa 和 Thymeleaf 做一个增删改查的示例. 先和大家聊聊我为什么喜欢写这种脚手架的项目,在我学习一门新技术的时候,总是想快速的搭建起一个 Demo 来试试它的效果,越简单越容易上手最好.在网上找相关资料的时候总是很麻烦,有的文章写的挺不错的但是没有源代码,有的有源代码但是文章介绍又不是很清楚,所在找资料的时候稍微有点费劲.因此在我学习 Spring Boot 的时候,会写一些最简单基本的示例项目,一方面方便其它朋友以最快的方式去了解,一方面如果我的项目需要用到相