zoukankan      html  css  js  c++  java
  • 拦截器Intercepter

    springmvc实现拦截器可以通过继承(不推荐)HandlerInterceptorAdapter,或者实现(推荐)HandlerInterceptor类,两种都可以,只是看个人喜欢

    继承方式验证登录:

    public class LoginInterceptor extends HandlerInterceptorAdapter{
    
    	private static final String[] unHandle = new String[]{"/user/register","/user/login"};
    	
    	private static final List<String> list = new ArrayList<String>(Arrays.asList(unHandle));
    	
    	@Override
    	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
    			throws Exception {
    		String url = request.getRequestURI();
    		if(list.contains(url)){
    			return true; 
    		}
    	//	User user = SysUtil.getCurrentUser();
    		return super.preHandle(request, response, handler);
    	}
    
    	
    }
    
    

    实现接口方式

    public class AuthIntercepter implements HandlerInterceptor {
    
        protected final Logger log = LoggerFactory.getLogger(getClass());
    
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            String token = request.getHeader("token");
            if (StringUtil.isNotBlank(token)) {
                //验证token
                String s = "/sso/loginInterface?token=" + token+"&loginflag=interface");
                if (s.equals("【true】")) {
                    return true;
                }
            }
            //未登录
            //todo test
    //        return false;
            throw new UnauthenticatedException();
    //        return true;
        }
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    
        }
    
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        }
    }
    

    当然需要在springmvc配置文件spring-mvc.xml里面配置:

     <mvc:interceptors>
            <mvc:interceptor>
                <mvc:mapping path="/**" />
                <!-- 需排除拦截的地址 -->
                <mvc:exclude-mapping path="/swagger-ui.html"/>
                <mvc:exclude-mapping path="/webjars/**"/>
                <mvc:exclude-mapping path="/v2/**"/>
                <mvc:exclude-mapping path="/swagger-resources/**"/>
                <bean class="cn.gov.zjport.pen.restapi.intercepter.AuthIntercepter" />
            </mvc:interceptor>
        </mvc:interceptors>
    

    当然也可以基于注解

    @Override
    	public void addInterceptors(InterceptorRegistry registry) {
    		registry.addInterceptor(new LoginInterceptor())
    		.addPathPatterns("/**")
    		.excludePathPatterns("/static/");
    		super.addInterceptors(registry);
    	}
    

    在这里插入图片描述
    当然在拦截器里面也可以通过java方式判断不需要过滤的路径,也可以通过配置,推荐使用java方式进行设置.

    世界上所有的不公平都是由于当事人能力不足造成的.
  • 相关阅读:
    Centos 7 安装jdk 配置环境变量
    【转载】C#检测客户端输入的内容是否含有危险字符串
    【转载】C#将图片以二进制流的方式存入数据库
    【转载】为何你的网站一直不被百度、搜狗、谷歌等搜索引擎收录
    【转载】目前国内主流的云服务器厂商有哪些
    【转载】阿里云服务器为网站选配Https证书
    【转载】网站遭遇DDoS攻击怎么办
    使用的阿里云服务器被黑客入侵怎么办
    HTTP状态码以及其含义大全
    Url的Base64编码以及解码
  • 原文地址:https://www.cnblogs.com/javayida/p/13347013.html
Copyright © 2011-2022 走看看