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 的相关属性):

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

  1. SSM框架开发web项目系列(五) Spring集成MyBatis

    前言 在前面的MyBatis部分内容中,我们已经可以独立的基于MyBatis构建一个数据库访问层应用,但是在实际的项目开发中,我们的程序不会这么简单,层次也更加复杂,除了这里说到的持久层,还有业务逻辑 ...

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

    请花 2 分钟来阅读和理解它——这很重要.真的.这里的术语和概念在文档的任何地方都被涉及到,它将在总体上 大大简化你对 Shiro 和安全的理解.   由于所使用的术语使得安全可能令人困惑.我们将通过 ...

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

    1.引入Shiro的Maven依赖 [html] view plain copy <!-- Spring 整合Shiro需要的依赖 --> <dependency> <g ...

  4. MP实战系列(十五)之执行分析插件

    SQL 执行分析拦截器[ 目前只支持 MYSQL-5.6.3 以上版本 ],作用是分析 处理 DELETE UPDATE 语句, 防止小白或者恶意 delete update 全表操作! 这里我引用M ...

  5. shiro实战系列(十四)之配置

    Shiro 被设计成能够在任何环境下工作,从最简单的命令行应用程序到最大的的企业群集应用.由于环境的多样性,使得许多配置机制适用于它的配置. 一. 许多配置选项 Shiro的SecurityManag ...

  6. shiro实战系列(十)之Subject

    毫无疑问,在 Apache Shiro 中最重要的概念就是 Subject.'Subject'仅仅是一个安全术语,是指应用程序用户的特定 安全的“视图”.一个 Shiro Subject 实例代表了一 ...

  7. springboot系列十五、springboot集成PageHelper

    一.介绍 项目中经常会遇到分页,PageHelper为我们解决了这个问题.本质上实现了Mybatis的拦截器,作了分页处理. 二.配置PageHelper 1.引入依赖 pagehelper-spri ...

  8. MP实战系列(十四)之分页使用

    MyBatis Plus的分页,有插件式的,也有其自带了,插件需要配置,说麻烦也不是特别麻烦,不过觉得现有的MyBatis Plus足以解决,就懒得配置插件了. MyBatis Plus的资料不算是太 ...

  9. Spring Boot 2.0系列文章(五):Spring Boot 2.0 项目源码结构预览

    关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/04/15/springboot2_code/ 项目结构 结构分析: Spring-boot-pr ...

随机推荐

  1. 大数据之 Hadoop学习笔记

    1 hadoop生态系统 hdfs 分布式文件系统 hadoop-hdfs-2.7.2.jar mapreduce 分布式计算框架 hadoop-mapreduce-client-app-2.7.2. ...

  2. Codeforces633G(SummerTrainingDay06-I dfs序+线段树+bitset)

    G. Yash And Trees time limit per test:4 seconds memory limit per test:512 megabytes input:standard i ...

  3. Flask如何给多个视图函数增加装饰器

    这几天在学习Flask, 遇到了些小问题,比如说怎么给多个视图函数加相同的装饰器 给单独一个视图函数加装饰器的话很简单,写一个装饰器,然后直接加在原装饰器下面即可,多个的话,会报这样一个错误: 这个异 ...

  4. Jquery封装(学习)01

    1.在开发过程中,我们有时候会经常用到重复的jquey代码,最常见的是我们那里需要就再哪里复制粘贴,这样大大增加了冗余代码,维护起来也不方便.我们何不把共同的jquery代码封装起来,哪里需要就哪里调 ...

  5. webstorm激活

    选择 License server http://idea.imsxm.com/ http://idea.iteblog.com/key.php (2016.11.16) http://v2mc.ne ...

  6. github 账号创建

    1.注册 注册地址:   https://github.com/join?source=header-home 2.建立组织 (1)点击头像旁边的"+",选择New organiz ...

  7. Docker在windows7上的安装

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

  8. angular.js 教程 -- 实例讲解

    angular.js AngularJS [1] 诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中.Ang ...

  9. Asp.Net Core混合使用cookie和JwtBearer认证方案

    自己有时捣鼓一些小型演示项目,服务端主要是提供Web Api功能.为了便于管理,需要在服务端加一些简单的MVC网页,用管理员身份登录,做一些简单的操作. 因此需要实现一个功能,在一个Asp.Net C ...

  10. 结合 Redis 实现同步锁

    1.技术方案 1.1.redis的基本命令 1)SETNX命令(SET if Not eXists) 语法:SETNX key value 功能:当且仅当 key 不存在,将 key 的值设为 val ...