java1234开源博客系统
博客信息

Zuul 请求过滤配置

发布时间:『 2018-10-24 00:10』  博客类别:SpringCloud  阅读(4114) 评论(0)

Zuul 请求过滤配置


比如我们登录某个系统 需要身份验证,用户名密码啥的;


我们请求服务,也可以来设置身份验证,也就是过滤非法请求;Zuul通过ZuulFilter过滤器实现;

一般具体实现的话 每次经过Zuul服务网关 我们都对带来的token进行有效性验证;


我们先定义一个 AccessFilter类:

package com.java1234.filter;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;

public class AccessFilter extends ZuulFilter{

	Logger logger=Logger.getLogger(AccessFilter.class);
	
	/**
	 * 判断该过滤器是否要被执行
	 */
	@Override
	public boolean shouldFilter() {
		// TODO Auto-generated method stub
		return true;
	}

	/**
	 * 过滤器的具体执行逻辑
	 */
	@Override
	public Object run() throws ZuulException {
		RequestContext ctx = RequestContext.getCurrentContext();
		HttpServletRequest request = ctx.getRequest();
		String parameter = request.getParameter("accessToken");
		logger.info(request.getRequestURL().toString()+" 请求访问");
		if(parameter==null){
			logger.error("accessToken为空!");
			ctx.setSendZuulResponse(false);
			ctx.setResponseStatusCode(401);
			ctx.setResponseBody("{\"result\":\"accessToken is empty!\"}");
			return null;
		}
		//  token判断逻辑
		logger.info(request.getRequestURL().toString()+" 请求成功");
		return null;
	}

	/**
	 * 过滤器的类型 这里用pre,代表会再请求被路由之前执行
	 */
	@Override
	public String filterType() {
		// TODO Auto-generated method stub
		return "pre";
	}

	/**
	 * 过滤器的执行顺序
	 */
	@Override
	public int filterOrder() {
		// TODO Auto-generated method stub
		return 0;
	}

}


然后再开启下 Filter配置:

package com.java1234.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.java1234.filter.AccessFilter;

/**
 * Zuul配置
 * @author Administrator
 *
 */
@Configuration
public class ZuulConfig {

	@Bean
	public AccessFilter accessFilter(){
		return new AccessFilter();
	}
}


配置完后,我们 访问:http://zuul.java1234.com:3001/java1234/studentServer/student/list


发现歇逼了:


{"result":"accessToken is empty!"}


我们带个 accessToken  http://zuul.java1234.com:3001/java1234/studentServer/student/list?accessToken=3232 

就返回了结果;


当然 token的生成和验证 这里我们不细讲了,具体要根据设计来;

关键字:   Zuul     请求过滤配置  
关注Java1234微信公众号
博主信息
Java1234_小锋
(知识改变命运,技术改变世界)
Powered by Java1234 V3.0 Copyright © 2012-2016 Java知识分享网 版权所有