#### 接口安全鑒權
- 場景舉例
> 我們支付項目部通常寫的接口是給予其他部門調用,但是由于沒有權限這方面的校驗,使得每個人都可以無限調用接口,有可能造成項目莫名其妙的錯誤,所以增加權限校驗是很有必要的
- 大致思路
> 如果有人需要調用接口,在后臺進行動態生成一個token給予訪問資格
- 增加過濾器MyFilter.java,需要繼承其ZuulFilter
```
package com.dg.sc.zuul.filter;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
/**
* @Author xietianhua
* @Create 2019-06-12 14:52
**/
@Component
public class MyFilter extends ZuulFilter{
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 0;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() throws ZuulException {
// 權限校驗
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
String accessToken = String.valueOf(request.getParameter("Token"));
if(!accessToken.equals("mytoken") || StringUtils.isEmpty(accessToken)) {
ctx.setSendZuulResponse( false );
ctx.setResponseStatusCode( 401 ); // 設置其返回代碼
return null;
}
return null;
}
}
```
- 在run方法里面,可以寫權限校驗邏輯,大致思路把token存到Redis中,設置過期時間即可
- 測試運行,沒有加token,會返回401錯誤,之前我們設置返回401

- 加上正確的token信息,才可以訪問
