shiro学习笔记三:shiro与spring集成-程序员宅基地

技术标签: java  开发工具  web.xml  

一、项目说明

项目环境:jdk1.7+tomcat7+idea2018+maven+shiro1.3.2

源代码github地址:https://github.com/tmAlj/shiro/tree/master/ssms

实现目标:通过shiro与spring+springmvc+mybatis整合,完成shiro的简单应用

综合实例:基于shiro的按钮级别的权限管理系统

二、整合流程

三、整合步骤(默认spring+springmvc+mybatis已整合)

(1)新建maven工程,名称为ssms(spring+springmvc+mybatis+shiro)

60a8db00a5886f87165480fc1108309dcfe.jpg

(2)配置pom.xml中依赖(下载地址:http://mvnrepository.com/

<!-- shiro依赖 -->
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-core</artifactId>
    <version>1.3.2</version>
</dependency>
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-ehcache</artifactId>
    <version>1.3.2</version>
</dependency>
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-spring</artifactId>
    <version>1.3.2</version>
</dependency>
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-web</artifactId>
    <version>1.3.2</version>
</dependency>
<!-- end -->

(3)配置web.xml

<!-- shiro过滤器配置 -->
<filter>
    <filter-name>shiroFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
        <param-name>targetFilterLifecycle</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>shiroFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

(4)配置sping-shiro-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

	<!-- 配置shiro的核心securityManager -->
	<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
		<property name="cacheManager" ref="cacheManager"/>
		<!--<property name="sessionMode" value="native"/>-->
		<!--<property name="realm" ref="jdbcRealm"/>-->
	</bean>

	<!-- 配置ehcache缓存 -->
	<bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
        <property name="cacheManagerConfigFile" value="classpath:ehcache.xml"/>
	</bean>

	<!-- 配置shiro的重要的元素Reaml(验证的数据源),可自定义 -->
<!--	<bean id="jdbcRealm" class="org.apache.shiro.samples.spring.realm.SaltAwareJdbcRealm">
	</bean>-->

	<!-- 配置shiro中bean生命周期管理器 -->
	<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>

	<!-- AOP式方法级权限检查 -->
	<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
		  depends-on="lifecycleBeanPostProcessor"/>
	<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
		<property name="securityManager" ref="securityManager"/>
	</bean>

	<!-- shiro过滤器配置,与web.xml中shiro过滤器同名 -->
	<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
		<property name="securityManager" ref="securityManager"/>
		<!-- 需要登录成功后跳转的页面 -->
		<property name="loginUrl" value="login.jsp"/>
		<!-- 登录成功后跳转的页面 -->
		<property name="successUrl" value="/s/index"/>
		<!-- 访问未授权页面跳转的页面 -->
		<property name="unauthorizedUrl" value="unauthor.jsp"/>
		<property name="filterChainDefinitions">
        <!-- 静态资源需要设置为anon,否则找不到 -->
			<value>
				/statics/** = anon
				/login.jsp = anon
				/welcom.jsp = authc
			</value>
		</property>
	</bean>
</beans>

(5)测试整合

        注:启动项目成功后加载登录页面,同时访问localhost:8080/ssms/welcom.jsp会跳转到登录首页,说明shiro与spring的基本整合没有问题

56aa3ab3a0322a48d4e8ea98a096fabd00f.jpg

转载于:https://my.oschina.net/tij/blog/1929116

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chunlulin2540/article/details/100899637

智能推荐

VC++实现获取本地主机网卡信息_vc 网卡名-程序员宅基地

文章浏览阅读4.3k次,点赞2次,收藏4次。我们在进行网络编程的时候,经常需要获取本地主机,网卡的信息,我们代码实现如下。#include "../common/initsock.h"#include #include #include #include "protoutils.h"#include "ProtoPacket.h"#pragma comment(lib, "Iphlpapi.lib")DWORD W_vc 网卡名

Wireshark的学习与使用_line-based text data-程序员宅基地

文章浏览阅读1.1k次。目录前言1.简介和基础流量分析是什么?HTTP协议和TCP协议2.Wireshark 流量分析中的王者Wireshark是什么Wireshark基本使用方法数据包筛选数据包搜索数据包还原数据提取流量包的修复3.Web流量包的分析4.USB流量包的分析5.ICMP流量包的分析前言本篇文章是基于B站视频 CTF MISC杂项流量分析专题培训1 做的学习笔记,如有写得不到位的地方请多多指教~ ∠(°ゝ°)敬礼1.简介和基础流量..._line-based text data

第十三章 编程练习_13章编程练习-程序员宅基地

文章浏览阅读259次。编程练习1//Classic.h#ifndef CLASSIC_H_#define CLASSIC_H_//base class#include class Cd{private: char performers[50]; char lable[20]; int selections; double playtime;public:_13章编程练习

tnsping命令详解-程序员宅基地

文章浏览阅读2.5w次。Tnsping是Oracle提供的诊断连接动作的重要方法。我们在客户端上使用tnsping,可以快速的定位连接过程中错误,进行问题判断。从功能上看,tnsping能够帮助我们解决几个方面问题: ü 本地Oracle Net配置文件解析:sqlnet.ora、tnsname.ora是我们客户端最重要的两个配置文件。由于历史的原因,Oracle基础配置文件很多是文本格式,Oracle N_tnsping命令

JavaScript字符串操作方法大全,包含ES6方法-程序员宅基地

文章浏览阅读121次。一、charAt()返回在指定位置的字符。var str="abc"console.log(str.charAt(0))//a二、charCodeAt()返回在指定的..._javascript es6 字符串 所有芳芳

latex页面设置、改变长度、环境、图表、标题、文献内容_\abovecaptionskip-程序员宅基地

文章浏览阅读7.4k次。1。页面设置a4 会给你一个较小的页面,为了使用更多的控制,可用 geometry宏包和命令 \layout 。2。改变长度在latex里改变长度的命令是 \addtolength 和 \setlength。latex可认的是 cm, mm, in 和 pt. 变量可设为负数。一个例子是 \addtolength{\parindent}{-5mm}一些有用的变量是:_\abovecaptionskip

随便推点

Linux /etc目录详解-程序员宅基地

文章浏览阅读509次。Linux /etc目录详解 /etc目录   包含很多文件.许多网络配置文件也在/etc 中. /etc/rc or/etc/rc.d or/etc/rc*.d   启动、或改变运行级时运行的scripts或scripts的目录. /etc/passwd   用户数据库,其中的域给出了用户名、真实姓名、家目录、加密的口令和用户的其他信息. /etc/fdprm   软..._/etc/*{thomas,rbd}

这 3 个 Set 集合的实现有点简单,那来做个总结吧_pk53com-程序员宅基地

文章浏览阅读2.6k次。Set 接口是 Java Collections Framework 中的一员,它的特点是:不能包含重复的元素,允许且最多只有一个 null 元素。Java 中有三个常用的 Set 实现类:HashSet: 将元素存储在哈希表中,性能最佳,但不能保证元素的迭代顺序LinkedHashSet: 维护一个链表贯穿所有元素,按插入顺序对元素进行迭代TreeSet: 将元素存储在一个红黑树中,按元素大小排序的序列迭代JDK 在实现时,这 3 个 Set 集合的核心功能其实分别委托给了: HashMap, L_pk53com

mysql连接数过多解决方案-程序员宅基地

文章浏览阅读595次。mysql 默认链接数是100个最大是16384。原则:想尽一切办法不重启导致原因:出现这种错误明显就是 mysql_connect 之后忘记 mysql_close;当大量的connect之后,就会出现Too many connections的错误,mysql默认的连接为100个,而什么情况下会出现这种错误呢?正常的mysql_connect 之后调用 mysql..._mysql connections数量很大怎么办

英语四六级选择题自动判卷算法-程序员宅基地

文章浏览阅读2.8k次。选择题数量:40—60,卷子数量:50——80数据准备:按照四六级真题答案构建或者自动生成,卷子数量提交:实验报告源代码,试卷结果,选择题答案分值实现,利用数组#include #include #include #include #include #include #define PAPERSIZE 55#define TESTSIZE 55int main()

小白的秋招记录——机试编程题(百度)_在一档综艺节目中,有一个定点射门的游戏,在一条直线上-程序员宅基地

文章浏览阅读546次。题目看起来特别简单,十分钟搞定两道题代码部门,然后剩下50分钟调bug。。。。几乎遍历了所有的方法但是无论怎么改第一题都只能A 36% ,第二题只能A 9%。笔试结束后问了身边的小伙伴,大都和我相似的情况。顺便 有没有全A的小伙伴,求思路。1、定点射门时间限制:C/C++语言1000MS;其他语言3000MS内存限制:C/C++语言65536KB;其他语言5898..._在一档综艺节目中,有一个定点射门的游戏,在一条直线上

零死角玩转stm32初级篇1-从零创建STM32工程模板_stm32工程模板创建-程序员宅基地

文章浏览阅读607次。本篇博文主要讲解如何从零构建STM32的工程模板项目。_stm32工程模板创建