SpringCloud之Zuul過濾器實現登錄鑒權實戰


自定義zuul過濾器實現登錄鑒權實戰

1、新建filter包 2、新建類繼承ZuulFilter,重寫方法 3、在類頂部加注解@Comment讓spring掃描

 1 /**
 2  * @author WGR
 3  * @create 2019/10/20 -- 21:19
 4  */
 5 /**
 6  * 登錄過濾器
 7  */
 8 @Component
 9 public class LoginFilter  extends ZuulFilter {
10 11     /**
12      * 過濾器類型,前置過濾器
13      * @return
14      */
15     @Override
16     public String filterType() {
17         return "pre";
18     }
19 20     /**
21      * 過濾器順序,越小越先執行
22      * @return
23      */
24     @Override
25     public int filterOrder() {
26 27         return 4;
28     }
29 30 31     /**
32      * 過濾器是否生效
33      * @return
34      */
35     @Override
36     public boolean shouldFilter() {
37 38         RequestContext requestContext = RequestContext.getCurrentContext();
39         HttpServletRequest  request = requestContext.getRequest();
40 41         //System.out.println(request.getRequestURI()); ///apigateway/product/api/v1/product/list
42         //System.out.println(request.getRequestURL()); //http://localhost:9000/apigateway/product/api/v1/product/list
43 44         //ACL
45 46         if ("/apigateway/api/v1/order/save".equalsIgnoreCase(request.getRequestURI())){
47             return true;
48         }else if ("/apigateway/order/api/v1/order/list".equalsIgnoreCase(request.getRequestURI())){
49             return true;
50         }else if ("/apigateway/order/api/v1/order/find".equalsIgnoreCase(request.getRequestURI())){
51             return true;
52         }
53 54         return false;
55     }
56 57     /**
58      * 業務邏輯
59      * @return
60      * @throws ZuulException
61      */
62     @Override
63     public Object run() throws ZuulException {
64 65         //JWT
66         RequestContext requestContext =  RequestContext.getCurrentContext();
67         HttpServletRequest request = requestContext.getRequest();
68 69         //token對象
70         String token = request.getHeader("token");
71 72         if(StringUtils.isBlank((token))){
73             token  = request.getParameter("token");
74         }
75 76 77         //登錄校驗邏輯  根據公司情況自定義 JWT
78         if (StringUtils.isBlank(token)) {
79             requestContext.setSendZuulResponse(false);
80             requestContext.setResponseStatusCode(HttpStatus.UNAUTHORIZED.value());
81         }
82 83         return null;
84     }
85 86 87 88 }

 

測試:

  • 不帶token

  • 帶token


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM