Spring与Shiro整合
Spring整合篇--Shiro
作者 : Stanley 罗昊
【转载请注明出处和署名,谢谢!】
什么是Shiro?
链接:https://www.cnblogs.com/StanleyBlogs/p/10732278.html
springboot集成shiro基础篇:https://www.cnblogs.com/StanleyBlogs/p/11407350.html
Spring集成Shiro配置
首先,在项目中引入jar包或依赖,关于spring以及mvc、mybatis、lo4j的依赖或jar包,怎么引入在这里就不必多讲了;
最主要的就引入关于shiro的依赖以及介绍,由于我用的是Maven目前用jar包的或Gradle的小伙伴也无需担心,因为作用都一样;
<!--日志相关-->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<!--集合工具类 -->
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.</version>
</dependency>
<!-- Shiro核心包 -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.4.</version>
</dependency>
<!-- shiro与web整合包 -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>1.3.</version>
</dependency>
<!-- shiro相关缓存包 -->
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.10.</version>
</dependency>
<!-- Shiro与Spring进行整合 -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.4.</version>
</dependency>
在web.xml中配置shiro与spring框架集成需要的ShiroFilter拦截器
问:为什么需要在web.xml配置拦截器呢?
答:原因非常简单,因为我们的spring环境一般所有创建对象都归spring去操作,因此,shiroFiler不需要归纳spring管理,shiro需要有自己的创建方式,这就是整合的意思;
我们只需要在配置文件中配置即可,值得注意的是,我们需要创建一个类名为:shiroFilter的类,要与配置文件中第二行的名称相同!

这个过滤器的是可以从spring容器中去找到我们的配置类也就是shiroFilter类;
具体怎么去找呢,关键就是第二行的shiroFilter这个词;
添加Shiro配置文件
1.自定义Realm
1.1 首先我们需要需要创建shiro的配置文件也就是spring-shiro.xml;
我们直接拷贝spring.xml文件,删除调用了根元素之外的所有内容:
在这之前呢,我们可以先把Realm给创建出来,也就是UserRealm,我们可以在我们的项目目录中创建一个Realm包,用来专门存放Realm以便区分开来:

1.2 类创建后,我们需要继承AuthorizingRealm这个接口,并且需要实现其中的两个方法,并且重写getName这个值:

1.3 写好后,我们需要将UserRealm这个类路径复制到配置文件中:

这样,自定义的Realm就搞定了;
2.配置我们的安全管理器SecurityManager
安全管理器配置也非常简单,直接在配置文件中编写即可,值得注意的是,下面的DefauktWebSecurityManager是固定的写法,类名必须一样!

因为SecurityManager是安全管理器,需要管理realm的安全,所以,需要跟我们定义的realm名字相同,我们定义的是userRealm;
3.Shiro的Web过滤器

Bean id 一定要跟web.xml文件中的shiroFilter一样!
拦截器功能讲解:
3.1:SecurityManager 就是对应我们上面配置的SecurityManager安全管理器中的词,对应上即可,作用就是用来执行、验证我们的授权操作包括拦截后的一些相关处理;
3.2 lgoinUrl:当我们进行登陆时候,登陆失败(被拦截)就会跳转至login这个页面中(这个路径中),这个页面可以自行配置;
3.3 unauthorizedUrl: 当你没有权限的时候,他就是把你拦截,并且把你跳转到合法页面上(友好页面);
3.4 filterChainDefinitions:这个所有的请求,所有的路径都需要在这里进行配置,我目前就在这里配置了一个/**,就表示所有请求都必须通过本过滤器(autch)进行验证,说白了就是检查你当前请求是否合法或有权限,并且做相对应的处置;
4.在mvc.xml文件中配置中引入spring-shiro.xml文件

Spring与Shiro整合的更多相关文章
- Spring与Shiro整合 登陆操作
Spring与Shiro整合 登陆操作 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 编写登陆Controller方法 讲解: 首先,如果你登陆失败的时候,它会把你的异常信息丢到 ...
- Spring与Shiro整合 加载权限表达式
Spring与Shiro整合 加载权限表达式 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 如何加载权限表达式 我们在上章内容中画了一张图,里面有三个分项,用户 角色 权限: 那 ...
- Spring与Shiro整合 静态注解授权
Spring与Shiro整合 静态注解授权 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 使用Shiro的种类 首先,Shiro的授权方式共有三种: 1.编程式授权(不推荐) 2. ...
- Spring mvc shiro 整合
参考 : http://www.360doc.com/content/14/0722/10/18637323_396209195.shtml http://www.360doc.com/content ...
- Spring+SpringMVC+Hibernate 与 shiro 整合步骤
目录 1. 业务需求分析 2. 创建数据库 3. 创建 maven webapp 工程 4. 创建实体类(POJO) 5. 配置 Hibernate 和 Mapping 5.1 Hibernate 主 ...
- Shiro整合Spring
首先需要添加shiro的spring整合包. 要想在WEB应用中整合Spring和Shiro的话,首先需要添加一个由spring代理的过滤器如下: <!-- The filter-name ma ...
- apache shiro整合spring(一)
apache shiro整合spring 将shiro配置文件整合到spring体系中 方式一:直接在spring的配置文件中import shiro的配置文件 方式二:直接在web.xml中配置sh ...
- 项目一:第十四天 1.在realm中动态授权 2.Shiro整合ehcache 缓存realm中授权信息 3.动态展示菜单数据 4.Quartz定时任务调度框架—Spring整合javamail发送邮件 5.基于poi实现分区导出
1 Shiro整合ehCache缓存授权信息 当需要进行权限校验时候:四种方式url拦截.注解.页面标签.代码级别,当需要验证权限会调用realm中的授权方法 Shiro框架内部整合好缓存管理器, ...
- Spring Boot:整合Shiro权限框架
综合概述 Shiro是Apache旗下的一个开源项目,它是一个非常易用的安全框架,提供了包括认证.授权.加密.会话管理等功能,与Spring Security一样属基于权限的安全框架,但是与Sprin ...
随机推荐
- python之ORM(对象关系映射)
实现了数据模型与数据库的解耦,通过简单的配置就可以轻松更换数据库,而不需要更改代码.orm操作本质上会根据对接的数据库引擎,翻译成对应的sql语句.所有使用Django开发的项目无需关心程序底层使用的 ...
- R.Swift优雅加载资源文件
在新的项目中,接触到了一个很不错的框架R.swift,可以帮助更方便安全的使用资源文件,相信已经使用过的或者还没有接触过的,一旦使用过了解过它,会爱上这个框架工具! 一.R.swift特点 当项目bu ...
- 使用promise封装ajax
直接上代码: function Ajax(method, headers, url, data, progress = null) { return new Promise(function (res ...
- 定制linux镜像并自动化安装
最近碰到个需求:要在内网环境安装centos6.5系统并搭建服务,但由于自动部署脚本里安装依赖包使用的是yum安装,而服务器无法连接外网,实施人员也不会本地yum源搭建….. 本来想法是打算把需要的依 ...
- Spring Cloud gateway 五 Sentinel整合
微服务当前这么火爆的程度,如果不能学会一种微服务框架技术.怎么能升职加薪,增加简历的筹码?spring cloud 和 Dubbo 需要单独学习.说没有时间?没有精力?要学俩个框架?而Spring C ...
- 用OpenGL画线
. 两点之间的连线称之为线段,在屏幕上显示线段放在现在已经不是稀奇的事情,大多数高级图形API都可以轻松实现,我尝试用OpenGL画线,在这里记录一下收获. . OpenGL这个级别的图形API,通常 ...
- Tornado 异步socketTCP通信
Tornado 有 TCPClient 和 TCPServer 两个类,可用于实现 tcp 的客户端和服务端.事实上,这两个类都是对iostream的简单包装. 真正重要的是 iostream ios ...
- PHP Notice: Undefined index:解决方法
PHP Notice: Undefined index:解决方法 PHP Notice: Undefined index: 解决方法 <pre> if (empty(swoole_get ...
- Algorithm: GCD、EXGCD、Inverse Element
数论基础 数论是纯数学的一个研究分支,主要研究整数的性质.初等数论包括整除理论.同余理论.连分数理论.这一篇主要记录的是同余相关的基础知识. 取模 取模是一种运算,本质就是带余除法,运算结果就是余数. ...
- (C#)WPF:Grid面板介绍
Grid:网格面板 Grid和其他各个Panel比较起来,功能最多也最为复杂.要使用Grid,首先要向RowDefinitions和ColumnDefinitions属性中添加一定数量的RowDefi ...