Spring Cloud之ZuulFilter攔截請求參數

過濾器放到網關:java

 

 

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過濾器
}

重寫的全部方法根據本身實際狀況使用。spring

 

模擬有token的時候apache

相關文章
相關標籤/搜索