1. 程式人生 > 程式設計 >SpringCloud Zuul過濾器實現登陸鑑權程式碼例項

SpringCloud Zuul過濾器實現登陸鑑權程式碼例項

1.新建一個filter‘包

2.新建一個類,實現ZuulFilter,重寫裡面的方法

3.在頂部類添加註解,@Component,讓Spring掃描

/**
 * 登陸過濾器
 */
@Component
public class LoginFilter extends ZuulFilter {
  @Override
  public String filterType() { //前置過濾器
    return PRE_TYPE;
  }

  @Override
  public int filterOrder() { //過濾器順序,越小越先執行
    return 3;
  }

  @Override
  public boolean shouldFilter() { //過濾器是否生效
    RequestContext requestContext = RequestContext.getCurrentContext();
    HttpServletRequest request = requestContext.getRequest();
    System.out.println(request.getRequestURI());
    System.out.println(request.getRequestURL());
    if ("/apizuul/order/api/v1/order/save".equalsIgnoreCase(request.getRequestURI())){ //攔截
      return true;
    }
    return false;
  }

  /**
   * 業務邏輯
   * @return
   * @throws ZuulException
   */
  @Override
  public Object run() throws ZuulException {
    System.out.println("攔截...");
    RequestContext requestContext = RequestContext.getCurrentContext();
    HttpServletRequest request = requestContext.getRequest();
    String token = request.getHeader("token");
    if (StringUtils.isBlank(token)){
      token = request.getParameter("token");
    }
    //登陸校驗邏輯 jwt生成token
    if (StringUtils.isBlank(token)){
      requestContext.setSendZuulResponse(false); //不會往下執行
      requestContext.setResponseStatusCode(HttpStatus.UNAUTHORIZED.value());
    }
    return null;
  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。