软件编程
位置:首页>> 软件编程>> java编程>> SpringCloud Zuul过滤器实现登陆鉴权代码实例

SpringCloud Zuul过滤器实现登陆鉴权代码实例

作者:Catbir  发布时间:2022-06-21 21:47:51 

标签:Spring,Cloud,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;
 }

来源:https://www.cnblogs.com/zhuomuniao/p/12452927.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com