动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

Spring MVC配置Shiro过程

08-31 17:51 146浏览
举报 T字号
  • 大字
  • 中字
  • 小字

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。因此在Spring MVC中,不可避免地也需要整合这样一个优秀地框架来实现更多的功能和安全性能。下面我们来讲解在Spring MVCShiro整合的过程中Spring MVC配置Shiro,下面是具体的配置过程:

1、加入shiro相关依赖的jar包

pom.xml部分内容如下:

 

pom.xml部分内容如下:

 <dependency>

    <groupId>org.apache.shiro</groupId>

    <artifactId>shiro-spring</artifactId>

    <version>1.3.2</version>

</dependency>

<dependency>

    <groupId>org.apache.shiro</groupId>

    <artifactId>shiro-core</artifactId>

    <version>1.3.2</version>

</dependency>

2、配置web.xml文件

<!DOCTYPE web-app PUBLIC

 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

 "http://java.sun.com/dtd/web-app_2_3.dtd" >

 

<web-app>

    <display-name>spring.shiro</display-name>

    <context-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>classpath:applicationContext.xml</param-value>

    </context-param>

    <!-- 防止中文乱码过滤器配置 -->

    <filter>

        <filter-name>springFilter</filter-name>

        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

        <init-param>

            <param-name>encoding</param-name>

            <param-value>utf-8</param-value>

        </init-param>

    </filter>

    <!-- 配置shiro filter过滤器,被定义在classpath:applicationContext.xml文件里

        DelegatingFilterProxy实际上是Filter的代理对象,默认情况下,spring会到IOC容器中查找和<filter-name>对应的filter bean,

        也可以通过targetBeanName的初始化参数来配置filter bean的id。

    -->

    <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>springFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

 

 

    <filter-mapping>

        <filter-name>shiroFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

    <!-- 配置自动加载 classpath:applicationContext.xml-->

    <listener>

        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

    </listener>

    <servlet>

        <servlet-name>springShiro</servlet-name>

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <!-- 配置springmvc -->

        <init-param>

            <param-name>contextConfigLocation</param-name>

            <param-value>classpath:springmvc.xml</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>

    <servlet-mapping>

        <servlet-name>springShiro</servlet-name>

        <url-pattern>*.do</url-pattern>

    </servlet-mapping>

 

    <welcome-file-list>

        <welcome-file>login.jsp</welcome-file>

    </welcome-file-list>

</web-app>

3、配置applicationContext.xml

1)、配置securityManager,也就是shiro的核心。

2)、配置cacheManager(缓存管理)

3)、配置Realm,自己定义shiroRealm,必须实现org.apache.shiro.realm.Realm这个接口

4)、配置lifecycleBeanPostProcessor,可以自动的来调用配置在spring IOC 容器中shiro bean的生命周期方法

5)、配置可以使用shiro注解,但必须在配置 lifecycleBeanPostProcessor才可以使用

6)、配置shiroFilter

下面是完整的配置文件

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"

    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"

    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"

    xsi:schemaLocation="

        http://www.springframework.org/schema/beans

        http://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/util

        http://www.springframework.org/schema/util/spring-util.xsd

        http://www.springframework.org/schema/aop

        http://www.springframework.org/schema/aop/spring-aop.xsd

        http://www.springframework.org/schema/context

        http://www.springframework.org/schema/context/spring-context.xsd

        http://www.springframework.org/schema/tx

        http://www.springframework.org/schema/tx/spring-tx.xsd

        http://www.springframework.org/schema/p

        http://www.springframework.org/schema/p/spring-p.xsd

        ">

    

 <!--

    1. 配置securityManager,也就是shiro的核心。

     -->

    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">

        <property name="realm" ref="myRealm" />

        <!-- 缓存管理器 -->

        <property name="cacheManager" ref="cacheManager" />

    </bean>

    <!--

    2. 配置cacheManager(缓存管理)

     -->

    <bean id="cacheManager" class="org.apache.shiro.cache.MemoryConstrainedCacheManager">

    </bean>

    <!--

    3. 配置Realm,自己定义的shiroRealm,必须实现org.apache.shiro.realm.Realm这个接口

     -->

    <bean id="myRealm" class="maven.spring.shiro.realms.ShiroRealm"></bean>

    <!--

    4.配置lifecycleBeanPostProcessor, 可以自动的来调用配置在spring IOC 容器中shiro bean的生命周期方法 -->

    <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />

    <!--

    5.启用IOC容器中使用shiro的注解,但必须在配置 lifecycleBeanPostProcessor才可以使用-->

    <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>

    <!--

 

 6. 配置shiroFilter

    6.1 id必须和web.xml 文件中配置的DelegatingFilterProxy的filter-name一致

     -->

    <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="/user/list.do" />

        <property name="unauthorizedUrl" value="/login.jsp" />

        <!-- 配置哪些页面需要受保护

            以及访问这些页面需要的权限

            anon可以被匿名访问,或者说游客可以访问

            authc 必须认证之后才能访问,即登录后才能访问的页面

         -->

        <property name="filterChainDefinitions">

            <value>

                /login = anon

                /index = anon

                /** = authc

            </value>

        </property>

 

    </bean>

 

    <context:component-scan base-package="maven.spring.shiro">

        <context:exclude-filter type="annotation"

            expression="org.springframework.stereotype.Controller" />

    </context:component-scan>

</beans>

3、配置springmvc文件

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"

    xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"

    xmlns:mvc="http://www.springframework.org/schema/mvc"

    xsi:schemaLocation="

        http://www.springframework.org/schema/mvc

        http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd

        http://www.springframework.org/schema/tx

        http://www.springframework.org/schema/tx/spring-tx.xsd

        http://www.springframework.org/schema/mvc

        http://www.springframework.org/schema/beans/spring-mvc.xsd

        http://www.springframework.org/schema/beans

        http://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/context

        http://www.springframework.org/schema/context/spring-context.xsd">

 

    <!-- 配置渲染器 -->

 

    <bean id="jspViewResolver"

        class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <property name="viewClass"

            value="org.springframework.web.servlet.view.JstlView" />

        <property name="prefix" value="/WEB-INF/jsp/" />

        <property name="suffix" value=".jsp" />

    </bean>

    <mvc:default-servlet-handler />

    <mvc:annotation-driven />

    <context:component-scan

        base-package="maven.spring.shiro.web.controller"></context:component-scan>

</beans>

这样,整个Spring MVC配置Shiro配置过程完成了。

    Spring MVC和Shiro都是十分优秀的开发框架,两者的注重点和优势各有不同, Spring MVC和Shiro的整合无异于强强联合,使得 Spring MVC框架的安全性得到了极大地保障!对Spring MVC和Shiro框架感兴趣,想深入学习的小伙伴可以在本站的后端开发页面中找到Spring MVC和Shiro的专题视频教程自行学习哦!

0人推荐
共同学习,写下你的评论
0条评论
天鹏桑
程序员天鹏桑

12篇文章贡献57547字

作者相关文章更多>

推荐相关文章更多>

DOM渲染的详细过程

QCode09-04 14:38

CSS水平和垂直居中技巧大梳理

Code大师09-04 14:50

mui的input框在IOS系统下无法聚焦或点击多次才能聚焦

不写代码你养我啊08-23 11:14

推荐的-视.频播放器以及在线客服

不写代码你养我啊09-17 18:02

谈谈java多线程的三大特性

要学习了06-18 18:13

发评论

举报

0/150

取消