企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
#### 接口安全鉴权 - 场景举例 > 我们支付项目部通常写的接口是给予其他部门调用,但是由于没有权限这方面的校验,使得每个人都可以无限调用接口,有可能造成项目莫名其妙的错误,所以增加权限校验是很有必要的 - 大致思路 > 如果有人需要调用接口,在后台进行动态生成一个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 ![](https://box.kancloud.cn/6787201f10fd3805d3ee6962b1ed00fc_725x397.png) - 加上正确的token信息,才可以访问 ![](https://box.kancloud.cn/f58c959bd1d99e3b5353a3836eff33d0_886x114.png)