<?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:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.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">
    <!-- web.xml中shiro的filter对应的bean -->
    <!-- Shiro 的Web过滤器 -->
    <!-- setter -->
    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <!--  -->
        <property name="securityManager" ref="securityManager"/>
        <property name="loginUrl" value="/login"/>
        <!-- 默认成功认证后，就是回到上次要访问地址 -->
        <!-- 如果配置，成功认证后跳转到index.do地址，通常不配置  -->
        <!-- <property name="successUrl" value="/sys/index"/> -->
        <!-- 没有权限，跳转到refuse.do地址,注解无效  -->
        <!-- <property name="unauthorizedUrl" value="/sys/refuse"/> -->
        <property name="filterChainDefinitions">
            <!-- 过滤器链
              认证：
                     1 在页面输入lisi 123 被loginInterceptor urlInterceptor放行
                     2 LogController中login方法收集页面表单中数据封装为User对象，调用service,调用dao来完成一个比对
                         收集和组织表单数据，进行比对
                由多个过滤器构成，每个过滤器承担不同职责

                authc：认证过滤器-表单认证过滤器，收集表单数据，进行比对(CustomRealm中身份认证方法)
                logout:注销过滤器，此拦截器设置的url可以不对应一个真实存在controller方法
             -->
            <value>
                /*/**=anon
                /font/**=anon
                /favicon.ico=anon
                /images/**=anon
                /css/**=anon
                /js/**=anon
                /reload/**=anon
                /layui/**=anon
                /json/**=anon
                /pdfWaterSet/**=anon
                /loginOut=logout
                /**=authc
            </value>
        </property>
    </bean>



    <!-- 安全管理器定义 -->
    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
        <property name="realm" ref="customRealm"></property>
    </bean>


    <!-- 自定义Realm -->
    <bean id="customRealm" class="com.emr.shiro.MyRealm">
        <!-- 将凭证匹配器设置到realm中，realm按照凭证匹配器的要求进行散列 -->
        <property name="cachingEnabled" value="true"></property>
        <property name="authenticationCachingEnabled" value="false"></property>
    </bean>



</beans>