美文网首页
Java拦截器实现

Java拦截器实现

作者: 冷枫abc | 来源:发表于2019-07-16 14:43 被阅读0次

java拦截器实现功能类似于aop功能的实现,实现拦截部分方法,一般用于类似 登录进入A页面,未登录进入B页面
实现方法有两种 实现Interceptor 接口 或者 继承HandlerInterceptorAdapter类,实现接口需要实现其中所有方法,继承抽象类则一般实现preHandle方法即可。
首先配置拦截类

package net.parim.spark.portal.adapter;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class HomeOpenHandlerConfigration extends WebMvcConfigurerAdapter {

    //关键,将拦截器作为bean写入配置中
    @Bean
    public HomeOpenInterceptor myInterceptor(){
        return new HomeOpenInterceptor();
    }
    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(myInterceptor()).addPathPatterns("/api/open/portal/**")
        .excludePathPatterns("/api/open/footerInfo").excludePathPatterns("/api/open/portal/template/default");
        super.addInterceptors(registry);
    }
}

addPathPatterns()方法为需要拦截的api,excludePathPatterns()方法为不需要拦截的接口api
配置拦截逻辑

package net.parim.spark.portal.adapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import net.parim.spark.common.config.ApplicationProperties;
import net.parim.spark.common.exceptions.BusinessException;
import net.parim.spark.core.system.constant.Constants;
import net.parim.spark.core.system.entity.Site;
import net.parim.spark.core.system.security.UserToken;
import net.parim.spark.core.system.security.exceptions.UnauthenticatedException;
import net.parim.spark.portal.service.PortalCommonService;

/**
 * 首页外放拦截器
 * @author liweiqiang
 *
 */
@Component
public class HomeOpenInterceptor extends HandlerInterceptorAdapter {

    
    @Autowired
    private PortalCommonService portalCommonService;
    @Autowired
    private ApplicationProperties applicationProperties;
    
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        //判断是否需要拦截
        Boolean flag = false;
        if(flag){
            //判断是否允许不登录的情况下 访问主页
            //如果不允许匿名访问返回401
               throw new UnauthenticatedException();
        }
        //否则允许直接放过,不进行任何拦截
        return true;
    }

}

相关文章

  • Java三大器之拦截器(Interceptor)的实现原理及代码

    课程地址:Java三大器之拦截器(Interceptor)的实现原理及代码示例 1,拦截器的概念java里的拦截器...

  • SpringBoot拦截器

    一般实现 定义一个拦截器类 MyInterceptor.java 实现HandlerInterceptor 接口 ...

  • SpringBoot支持interceptor(拦截器)

    1:创建拦截器类,实现HandlerInterceptor接口 2:创建java类,继承WebMvcConfigu...

  • SpringBoot中的Filter,Interceptor,A

    Filter java本身自带的过滤器,实现方式 Interceptor spring自带的拦截器. Aspec...

  • Ribbon 负载均衡

    core:Java功能增强 —— 拦截器 通过@LoadBalanced修饰就可以为应用引入Ribbon框架来实现...

  • Java拦截器实现

    java拦截器实现功能类似于aop功能的实现,实现拦截部分方法,一般用于类似 登录进入A页面,未登录进入B页面实现...

  • SpringMVC拦截器

    SpringMVC拦截器 拦截器的定义 自定义的拦截器需要实现一个接口HandlerInterceptor,并实现...

  • Spring15-拦截器

    定义拦截器 定义拦截器需要实现HandlerInterceptor 配置拦截器 注意:spring mvc的拦截器...

  • 拦截器

    一 拦截器 定义拦截器,实现HandlerInterceptor接口 二 springMVC 拦截器配置 1 针对...

  • SpringBoot 2.3 + 自定义拦截器

    1、创建自定义拦截器实现 HandlerInterceptor(拦截器处理器) 2、实现WebMvnConfigu...

网友评论

      本文标题:Java拦截器实现

      本文链接:https://www.haomeiwen.com/subject/qnxtlctx.html