Allen32

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Shiro的Spring集成之基本配置(xml)

1.导入Pom依赖

<dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.3</version>
        </dependency>
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>1.2.2</version>
        </dependency>

        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-web</artifactId>
            <version>1.2.2</version>
        </dependency>
        <dependency>
            <groupId>net.sf.ehcache</groupId>
            <artifactId>ehcache-core</artifactId>
            <version>2.6.8</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-ehcache</artifactId>
            <version>1.2.2</version>
        </dependency>

        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-spring</artifactId>
            <version>1.2.2</version>
        </dependency>


定时器

        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-quartz</artifactId>
            <version>1.2.2</version>
        </dependency>

 

 设置拦截器:权限需要在访问链接之前,所以配置拦截器,Spring配置在Spring的字符拦截器的后面

 

<!-- shiro过虑器,DelegatingFilterProx会从spring容器中找shiroFilter -->
    <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>

 

  shiroFilter是一个代理对象  需要在shiro.xml(Spring配置文件)中指定

 

 

shiro.xml 并指定一个bean

   <!--这里的id必须和拦截其中的id一致因为拦截其中的对象实际上是一个代理对象-->
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager"/> <property name="loginUrl" value="/login.do"/> <property name="successUrl" value="/main.do"/> <property name="unauthorizedUrl" value="/nopermission.jsp"/> <property name="filterChainDefinitions"> <value> /js/**=anon /images/**=anon /style/**=anon /logout.do=logout /**=authc </value> </property> </bean>

配置安全管理器

 

<!-- 配置安全管理器SecurityManager -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
    <property name="realm" ref="userRealm"/>  <!--这里是自定义的realm(数据源)-->
</bean>

 

 

 

权限注解

在总的applicationContext.xml中添加如下配置:    
<!-- 开启aop,对类代理 -->
    <aop:config proxy-target-class="true"></aop:config>
    <!-- 开启shiro注解支持 -->
    <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
        <property name="securityManager" ref="securityManager" />
    </bean>

在需要控制的方法上贴上注解:@RequiresPermissions("employee:view")

凭证匹配器

 

 <bean id="credentialsMatcher"
        class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">
        <property name="hashAlgorithmName" value="md5" />
        <property name="hashIterations" value="1" />
</bean>

<!-- 自定义Realm -->
    <bean id="userRealm" class="com.xxx.wms.realm.UserRealm">
        <property name="credentialsMatcher" ref="credentialsMatcher" />
</bean>

 

posted on 2018-01-31 13:24  Allen32  阅读(1094)  评论(0)    收藏  举报