本发明涉及互联网技术领域,特别涉及一种网关对用户请求进行统一拦截判断是否放行的方法。

背景技术:

随着互联网发展的越来越快,技术也更新的非常频繁,比如开发一个系统的架构由最初始的单个服务器就能处理演变到现在的利用springcloud技术实现的微服务,随着业务的越来越复杂,结构也变得越来越复杂。

技术实现要素:

本发明的目的旨在至少解决所述技术缺陷之一。

为此,本发明的目的在于提出一种网关对用户请求进行统一拦截判断是否放行的方法。

为了实现上述目的,本发明的实施例提供一种网关对用户请求进行统一拦截判断是否放行的方法,包括如下步骤:

步骤s1,当接收到用户的服务请求时,对用户进行登陆是否有效以及该服务请求是否合法进行拦截判断;

步骤s2,根据预先设置的所有url地址和过滤器应忽略的url地址进行判断;

步骤s3,判断url地址是否为有效地址,并判断用户令牌token是否有效;

步骤s4,如果用户不具备该地址访问权限,则过滤返回;如果通过,则对该服务请求进行相关用户信息的请求头的添加。

进一步,在所述步骤s3中,所述判断地址和用户token是否有效,包括:

注册匹配器读取配置文件来获取需要忽略的地址请求,通过注册匹配来判断该服务请求url地址是否属于网关要忽略的地址请求,如果是则进行放行;否则继续进行判断,获取请求头中的token信息,通过token信息从redis数据库中获取用户信息;如果返回异常或者返回的用户信息为空,则请求识别,表示该token信息失效,将错误信息返回到客户端;如果返回的用户信息有效,则将用户信息放到请求的属性attributes中,放行该过滤器。

进一步,判断该服务请求url地址是否属于网关要忽略的地址请求,包括:通过配置文件中的path.skip属性将需要忽略过滤的地址放进忽略权限匹配校验器中,然后对访问的地址进行比较,如果访问地址属于忽略过滤地址,那么进行放行,不再进行token的校验。

进一步,所述判断用户是否具有该url的访问权限,包括:

首先判断该服务请求是否进行直接放行,如果不属于则忽略url地址,判断url地址是否属于合法或者存在url地址;如果不存在则返回资源无法找到信息,将具有的url地址由注册匹配器来获得所拥有的所有合法的url地址,如果请求的url地址存在,则根据api字段id和用户的角色进行调用来判断用户是否具有该url权限的方法,并返回结果,通过结果判断是否需要放行;如果结果中api字段不为空,则将api字段放进请求的属性attributes中。

进一步,从请求中获取前两个过滤器中保存的属性attributes,并通过url编码后保存到请求头中,然后将请求放行,请求到达指定的服务进行相应的处理。

进一步,添加上下文信息,对信息进行url编码,再一次对请求进行过滤,对前两次过滤中的请求头的信息再一次处理,将信息转化为json格式并对用户信息进行url编码,然后进行放行到对应的请求服务中去。

根据本发明实施例的网关对用户请求进行统一拦截判断是否放行的方法,基于springcloudgateway网关过滤器的管理技术,结合redis,mysql数据库,用于用户对服务发出请求时对用户进行登陆是否有效并且请求是否合法的拦截判断,根据预先设置的所有url地址,和过滤器应该忽略的url地址进行判断,判断地址是否为有效地址,判断用户token是否有效,然后如果用户不具备该地址访问的权限,则过滤返回,如果通过,则对请求进行一些有关用户信息的请求头的添加,从而对业务进行请求,一些用户相关的信息可以从请求头中获取。本发明解决了用户登陆失效判断以及url请求无效问题,确保发送到微服务的请求都是有效的。本发明采用网关对用户的请求进行统一的拦截并进行url以及用户登陆是否有效等一系列的判断来决定是否将请求发送到指定的微服务中去,并根据请求路径路由到不同的微服务,保证尽量的简化开发。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1为根据本发明实施例的网关对用户请求进行统一拦截判断是否放行的方法的流程图;

图2为根据本发明实施例的网关对用户请求进行统一拦截判断是否放行的方法的示意图。

具体实施方式

下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

本发明提出一种网关对用户请求进行统一拦截判断是否放行的方法,通过判断地址有效性和token有效性、判断用户是否具有该url的访问权限、添加上下文信息,对信息进行url编码,可以保证其它服务收到的请求为安全合法的,以及对添加的请求头数据进行url编码。

如图1和图2所示,本发明实施例的网关对用户请求进行统一拦截判断是否放行的方法,包括如下步骤:

步骤s1,当接收到用户的服务请求时,对用户进行登陆是否有效以及该服务请求是否合法进行拦截判断。

步骤s2,根据预先设置的所有url地址和过滤器应忽略的url地址进行判断。

步骤s3,判断url地址是否为有效地址,并判断用户令牌token是否有效。

具体的,判断地址和用户token是否有效,包括:

注册匹配器读取配置文件来获取需要忽略的地址请求,通过注册匹配来判断该服务请求url地址是否属于网关要忽略的地址请求,如果是则进行放行;否则继续进行判断,获取请求头中的token信息,通过token信息从redis数据库中获取用户信息;如果返回异常或者返回的用户信息为空,则请求识别,表示该token信息失效,将错误信息返回到客户端;如果返回的用户信息有效,则将用户信息放到请求request的属性attributes中,放行该过滤器。

在本发明的实施例中,判断该服务请求url地址是否属于网关要忽略的地址请求,包括:通过配置文件中的path.skip属性将需要忽略过滤的地址放进忽略权限匹配校验器中,然后对访问的地址进行比较,如果访问地址属于忽略过滤地址,那么进行放行,不再进行token的校验。

步骤s4,如果用户不具备该地址访问权限,则过滤返回;如果通过,则对该服务请求进行相关用户信息的请求头的添加。

在本步骤中,判断用户是否具有该url地址的访问权限,包括如下步骤:

首先判断该服务请求是否进行直接放行,判断此次过滤是否需要放行忽略地址,如果不属于则忽略url地址,用url匹配校验器判断请求的url地址是否属于合法或者存在url地址(匹配校验器通过mysql数据库中的api表将系统api注册进匹配校验器中,如果url匹配不成功,那么返回资源找不到);如果不存在则返回资源无法找到信息,然后从请求头中找到current-context(由第一个过滤器通过token从redis中找到用户信息保存到该请求头中),获取对应的值就是用户信息,从用户信息中得到所拥有的角色,然后利用urlapi匹配工具获取到该路径所对应的apiid,然后根据id和用户角色想对应的资源校验服务发起请求,通过匹配数据库中role_api表,api_column表得到api字段结果,如果失败,说明该用户不具备该url的访问权限,如果成功,那么将用户具有的api字段信息权限放入到columnids请求头中,进行放行。

将具有的url地址由注册匹配器来获得所拥有的所有合法的url地址,如果请求的url地址存在,则根据api字段id和用户的角色进行调用来判断用户是否具有该url权限的方法,并返回结果,通过结果判断是否需要放行;如果结果中api字段不为空,则将api字段放进请求的属性attributes中。

在本步骤中,从request请求中获取前两个过滤器中保存的属性attributes,并通过url编码后保存到请求头中,然后将请求放行,请求到达指定的服务进行相应的处理。

添加上下文信息,对信息进行url编码,再一次对请求进行过滤,对前两次过滤中的请求头的信息再一次处理,将信息转化为json格式并对用户信息进行url编码,然后进行放行到对应的请求服务中去,返回请求结果。

根据本发明实施例的网关对用户请求进行统一拦截判断是否放行的方法,基于springcloudgateway网关过滤器的管理技术,结合redis,mysql数据库,用于用户对服务发出请求时对用户进行登陆是否有效并且请求是否合法的拦截判断,根据预先设置的所有url地址,和过滤器应该忽略的url地址进行判断,判断地址是否为有效地址,判断用户token是否有效,然后如果用户不具备该地址访问的权限,则过滤返回,如果通过,则对请求进行一些有关用户信息的请求头的添加,从而对业务进行请求,一些用户相关的信息可以从请求头中获取。本发明解决了用户登陆失效判断以及url请求无效问题,确保发送到微服务的请求都是有效的。本发明采用网关对用户的请求进行统一的拦截并进行url以及用户登陆是否有效等一系列的判断来决定是否将请求发送到指定的微服务中去,并根据请求路径路由到不同的微服务,保证尽量的简化开发。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。本发明的范围由所附权利要求及其等同限定。

gateway请求拦截_一种网关对用户请求进行统一拦截判断是否放行的方法与流程...相关推荐

  1. java扫描接口_一种扫描接口并生成可调用API接口文档的方法与流程

    本发明属于JavaWeb开发技术领域,涉及一种API接口文档的生成方法,尤其是一种扫描接口并生成可调用API接口文档的方法. 背景技术: API(Application Programming Int ...

  2. python椭圆形骨料_一种基于python再生混凝土三维随机球形骨料模型的构建方法与流程...

    本发明涉及建筑技术领域,尤其涉一种基于python再生混凝土三维随机球形骨料模型的构建方法. 背景技术: 再生混凝土是指利用再生粗骨料部分或者全部代替天然骨料配置而成的混凝土,再生混凝土技术的开发和利 ...

  3. 点云孔洞定位_一种对具有孔洞的三维点云的检测与识别方法与流程

    本发明属于待测点云处理技术领域,涉及三维点云检测与识别方法,尤其是一种对具有孔洞的三维点云的检测与识别方法. 背景技术: 点云技术在逆向工程中有很普遍的应用.构建大量的几何模型之后,需要对点云模型进行 ...

  4. android 模拟器识别,一种基于符号的识别Android应用运行在模拟器中的方法与流程...

    本发明涉及一种基于符号的识别android应用运行在模拟器中的方法. 背景技术: 很多的移动应用都会使用一种基于lbs的地理围栏的技术(如移动打卡),某些用户为了突破这种围栏的限制,将移动应用运行在模 ...

  5. ajax jq 图片上传请求头_全面分析前端的网络请求方式:Ajax ,jQuery ,axios,fetch

    链接:https://juejin.im/post/5c9ac607f265da6103588b31 一.前端进行网络请求的关注点 大多数情况下,在前端发起一个网络请求我们只需关注下面几点: 传入基本 ...

  6. 两点定标法_一种两点校正红外热像仪的非均匀性的模块及方法

    一种两点校正红外热像仪的非均匀性的模块及方法 [技术领域] [0001] 本发明属于红外热成像系统的非均匀性校正领域,特别是一种两点校正红外热像 仪的非均匀性的模块及方法. [背景技术] [0002] ...

  7. gis快速接地开关_一种基于扫描电镜和能谱仪的GIS放电异物来源分析方法

    扫描电镜(SEM)及其附带的能谱仪(EDS)可以用来进行金属的组织形貌观察和微区成分分析.扫描电镜具有景深大.图像立体等优点,图像放大倍数范围为8~300000倍,试验人员可以通过调节扫描电镜的相关参 ...

  8. 安卓获取摄像头帧率_一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法...

    一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法 [技术领域] [0001 ]本发明涉及通讯技术领域,尤其涉及一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法. ...

  9. 安卓获取摄像头帧率_一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法_2015109767475_说明书_专利查询_专利网_钻瓜专利网...

    技术领域 本发明涉及通讯技术领域,尤其涉及一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法. 背景技术 多媒体终端基于android平台,在会议应用等场景中,需要使用外置的USB摄 ...

最新文章

  1. 一个完整的DS1302时钟在STM32上的应用实例
  2. Spring官网阅读(三)自动注入
  3. Java进阶:Set、Map线程安全问题
  4. Flutter 插件url_launcher简介及使用,打开外部浏览器,拨打电话,发送短信,打开微信,支付宝,qq等
  5. Android笔记(六十七) 自定义控件
  6. 和套套一样,一次性橡胶手套制作现场, 这鬼畜的画风
  7. 盖茨比乔布斯_如何使用盖茨比创建您的博客并通过手机进行处理
  8. Python MySqlDB 增删改数据库(转载)
  9. osip2 代码分析
  10. 2021-2025年中国道路平地机行业市场供需与战略研究报告
  11. 修改Kubelet的cgroup driver
  12. java int integer_浅谈java中int和Integer的区别
  13. z反变换计算机控制,计算机控制4.Z变换.ppt
  14. PDF转图片怎样转换?有哪些好用PDF转换的方法?
  15. 饥饿的小易(java)
  16. 函数对称性常见公式_高中函数对称性总结
  17. 159.Vue实现个人博客(七)【Vue2.0-路由参数】 2019.03.15
  18. 协议和协议栈的区别?
  19. 转发器、网桥、路由器和网关的区别如下:
  20. ROS rosbridge

热门文章

  1. sasl java_javaSASL_SSL帐号密码方式访问kafka
  2. eclipse怎么升级到java ee,如何为Java EE开发人员升级Eclipse?
  3. IAR切BANK--BANK说明
  4. CortexM0开发 —— UART时序分析
  5. ant-design table 分页(tableProps)
  6. Music List
  7. Gvim 字体大小设置和FencView插件安装
  8. React开发(209):react错误边界
  9. 前端学习(3248):react的脚手架文件
  10. [html] 使用a标签的download属性下载文件会有跨域问题吗?如何解决?