1. 程式人生 > >Spring Cloud之ZuulFilter攔截請求引數

Spring Cloud之ZuulFilter攔截請求引數

過濾器放到閘道器:

 

 

package com.toov5.filter;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;

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

@Component
public class TokenFilter extends ZuulFilter { public boolean shouldFilter() { //判斷過濾器是否生效 // TODO Auto-generated method stub return true; } public Object run() throws ZuulException { //編寫顧慮器攔截業務邏輯程式碼 // 案例:攔截所有都服務介面,判斷服務介面上是否有傳遞userToekn引數 //獲取上下文 RequestContext currentContext = RequestContext.getCurrentContext();
//獲取request物件 HttpServletRequest request = currentContext.getRequest(); //驗證token時候 token的引數 從請求頭獲取 String userToken = request.getParameter("userToken"); if (StringUtils.isEmpty(userToken)) { //返回錯誤提示 currentContext.setSendZuulResponse(false); //false 不會繼續往下執行 不會呼叫服務介面了 閘道器直接響應給客戶了
currentContext.setResponseBody("no no no you have not userToken"); currentContext.setResponseStatusCode(401); return null; } //否則正常執行 呼叫服務介面... return null; } @Override public String filterType() { //過濾器的型別 // TODO Auto-generated method stub return "pre"; //表示在請求之前執行 } @Override public int filterOrder() { //過濾器執行的順序 一個請求在同一個階段存在多個過濾器時候,多個過濾器執行順序問題 // TODO Auto-generated method stub return 0; } //閘道器的filter過濾器 }

重寫的所有方法根據自己實際情況使用。

 

模擬有token的時候