美文网首页
使用 zuul权限校验

使用 zuul权限校验

作者: 小强唐 | 来源:发表于2018-12-13 10:55 被阅读97次
  • 全新校验拦截器
/**
 * 登录过滤器
 *记得类上加Component注解
 */
@Component
public class LoginFilter extends ZuulFilter {

    /**
     * 过滤器类型,前置过滤器
     */
    @Override
    public String filterType() {
        return PRE_TYPE;
    }

    /**
     * 过滤器顺序,越小越先执行
     */
    @Override
    public int filterOrder() {
        return 4;
    }

    /**
     * 过滤器是否生效
     * 返回true代表需要权限校验,false代表不需要用户校验即可访问
     */
    @Override
    public boolean shouldFilter() {

        //共享RequestContext,上下文对象
        RequestContext requestContext = RequestContext.getCurrentContext();
        HttpServletRequest request = requestContext.getRequest();

        System.out.println(request.getRequestURI());
        //需要权限校验URL
        if ("/apigateway/order/api/v1/order/save".equalsIgnoreCase(request.getRequestURI())) {
            return true;
        } else if ("/apigateway/order/api/v1/order/list".equalsIgnoreCase(request.getRequestURI())) {
            return true;
        } else if ("/apigateway/order/api/v1/order/find".equalsIgnoreCase(request.getRequestURI())) {
            return true;
        }
        return false;
    }

    /**
     * 业务逻辑
     * 只有上面返回true的时候,才会进入到该方法
     */
    @Override
    public Object run() throws ZuulException {

        //JWT
        RequestContext requestContext = RequestContext.getCurrentContext();
        HttpServletRequest request = requestContext.getRequest();

        //token对象,有可能在请求头传递过来,也有可能是通过参数传过来,实际开发一般都是请求头方式
        String token = request.getHeader("token");

        if (StringUtils.isBlank((token))) {
            token = request.getParameter("token");
        }
        System.out.println("页面传来的token值为:" + token);
        //登录校验逻辑  如果token为null,则直接返回客户端,而不进行下一步接口调用
        if (StringUtils.isBlank(token)) {
            // 过滤该请求,不对其进行路由
            requestContext.setSendZuulResponse(false);
            //返回错误代码
            requestContext.setResponseStatusCode(HttpStatus.UNAUTHORIZED.value());
        }
        return null;
    }
}
  • 关键说明

(1)方法说明

filterType : filter类型,分为pre、error、post、 route

filterOrder: filter执行顺序,通过数字指定,数字越小,执行顺序越先

shouldFilter: filter是否需要执行 true执行 false 不执行

run : filter具体逻辑(上面为true那么这里就是具体执行逻辑)

(2)filter类型说明

         pre: 请求执行之前filter

         route: 处理请求,进行路由

         post: 请求处理完成后执行的filter

         error: 出现错误时执行的filter

买家登录

GET /login/buyer

参数

openid: abc

返回

cookie里设置openid=abc

{
    code: 0,
    msg: "成功",
    data: null
}

卖家登录

GET /login/seller

参数

openid: xyz

返回

cookie里设置token=UUID, redis设置key=UUID, value=xyz

{
    code: 0,
    msg: "成功",
    data: null
}

相关文章

  • 使用 zuul权限校验

    全新校验拦截器 关键说明 (1)方法说明 filterType : filter类型,分为pre、error、po...

  • 使用 zuul权限校验

    全新校验拦截器 关键说明 (1)方法说明 filterType : filter类型,分为pre、error、po...

  • 服务网关 Zuul 与 Redis 结合实现 Token 权限校

    这两天在写项目的全局权限校验,用 Zuul 作为服务网关,在 Zuul 的前置过滤器里做的校验。 权限校验或者身份...

  • 网关

    通过网关访问服务 传递Cookie头 Zuul限流 Zuul的权限校验 APIGateWay鉴权

  • Swift 相册、相机、麦克风、定位权限判断

    1、相册权限校验,代码如下: 2、相机权限校验,代码如下: 3、麦克风权限校验,代码如下: 4、定位权限校验,代码...

  • vue添加权限校验

    前端的权限校验可以分为菜单资源校验、接口资源和按钮资源校验。 菜单权限 把接口权限和按钮权限统称为资源权限,在数据...

  • zuul路由网关

    功能 请求路由和校验过滤 整合 Zuul 和 Eureka 进行整合,将 Zuul 自身注册为 Eureka 服务...

  • DRF-权限源码流程和基本使用

    django rest_framework 权限 在视图里面去设置权限 postman校验 基本使用 我们可以添加...

  • Spring之AntPathMatcher

    在使用Zuul 做网关权限控制的时候,需要判断当前登陆用户是否有权限访问接口。这里就涉及到url路径匹配问题。这里...

  • 使用JWT做权限校验

    很多时候我们的网站或者我们的系统需要身份验证和登录功能来保护用户隐私,区分不同的用户,这个时候可能有很多方法,其中...

网友评论

      本文标题:使用 zuul权限校验

      本文链接:https://www.haomeiwen.com/subject/qceyhqtx.html