Sping拦截器配置例外路径

思路:通过全局参数,选择性的跳过拦截器逻辑。

web.xml中配置:

<!-- 拦截器 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <!-- 对所有的请求拦截使用/** ,对某个模块下的请求拦截使用:/myPath/* -->
            <mvc:mapping path="/**" />
            <ref bean="userAccessInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>
 
    <bean id="userAccessInterceptor"
        class="com.kye.interceptor.UserAccessApiInterceptor">
            <span style="color:#FF0000;"><property name="unUAInterLists" >
            	<list>
            		<value>/S/*</value>
            	</list>
            </property></span>
    </bean>
	
	
	
	<!-- 解密拦截器 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <!-- 对登录的请求拦截 /Login-->
            <mvc:mapping path="/S/*" />
            <ref bean="userSecurity" />
        </mvc:interceptor>
    </mvc:interceptors>
 
    <bean id="userSecurity"
        class="com.kye.interceptor.UserSecurity">
    </bean>

在原始拦截器中增加实体类的全局参数;对例外的路径增加拦截器。

UserAccessApiInterceptor类中增加例外的跳出逻辑:

public class UserAccessApiInterceptor extends HandlerInterceptorAdapter{
    private Logger log = Logger.getLogger(this.getClass());
    /**
     * 免登入 免检查地址
     */
    private List<String> unUAInterLists;


    public List<String> getUnUAInterLists() {
        return unUAInterLists;
    }

    public void setUnUAInterLists(List<String> unUAInterLists) {
        this.unUAInterLists = unUAInterLists;
    }


    @Override
    public boolean preHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler) throws Exception {
        // 20160511 增加例外地址,例外地址跳出
        String servletPath = request.getRequestURI();
        for (String string : unUAInterLists) {
            // 如果存在 后方的通配符,那么匹配地址的前部分
            int beginId = string.indexOf(SecurityUtil.WIL_CHAR);
            if (beginId >= 0 && servletPath.startsWith(request.getContextPath() + string.substring(0, beginId))) {
                return true;
            }
        }

/**

拦截逻辑

*/

       return true;
    }

}

例外链接的拦截器正常逻辑即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值