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

aed7c30a6e2dc44d9831746bc168a865.gif

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

背景技术:

随着互联网发展的越来越快,技术也更新的非常频繁,比如开发一个系统的架构由最初始的单个服务器就能处理演变到现在的利用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以及用户登陆是否有效等一系列的判断来决定是否将请求发送到指定的微服务中去,并根据请求路径路由到不同的微服务,保证尽量的简化开发。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406304.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spark sql 上个月_Spark学习之路 (十八)SparkSQL简单使用

一、SparkSQL的进化之路1.0以前:Shark1.1.x开始:SparkSQL(只是测试性的) SQL1.3.x:SparkSQL(正式版本)Dataframe1.5.x:SparkSQL 钨丝计划1.6.x:SparkSQLDataFrameDataSet(测试版本)x:SparkSQLDataFrameDataSet(正式版本)SparkSQL:还有其他的…

GetClientRect相当于GetWindowRect和ScreenToClient区别

From: http://www.cnblogs.com/yongtaiyu/archive/2011/05/18/2049554.html GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。 GetClientRect取得窗口客户区(…

xxljob 配置具体定时任务_记一次xxl-job定时任务没有触发的问题

当初选了xxl-job就是因为它的触发机制比较靠谱,到点准时发,而且有日志可以看。 昨天突然发现部署在一台本地机器上的xxl-job到点并没有触发,且没有任何日志。通过管理页面查询触发日志,发现日志还是有的,只是和筛选条件不甚匹配。比如选取了昨天的日志,结果集中包含了今天…

TOMCAT启动完成但是ECLIPSE仍然显示starting....

最近重新部署了一个TOMCAT服务,但是启动碰到个问题,虽然TOMCAT控制台已显示启动成功,但是ECLIPSE右下角仍然一直显示STARTING,最后TOMCAT超时,启动失败。之前以为是拷贝工程的问题,但其实是SERVER配置的问题…

例解 autoconf 和 automake 生成 Makefile 文件

From: http://www.ibm.com/developerworks/cn/linux/l-makefile/ 简介: 本文介绍了在 linux 系统中,通过 Gnu autoconf 和 automake 生成 Makefile 的方法。主要探讨了生成 Makefile 的来龙去脉及其机理,接着详细介绍了配置 Configure.in 的方…

爱慕内衣信息化颠覆流程重构供应链

通过IT,爱慕内衣进行了供应链流程的颠覆和重构。在北京慕集团首席信息官赵先生脑海中,一直有着这样一幅“大图景”:只要需要,老总在自己的办公室里能看到每一寸原料的采购情况,每一件成衣的生产和销售情况,…

mysql中 课程1比课程2成绩高_小菜菜mysql练习解读分析1——查询 01 课程比 02 课程成绩高的学生的信息及课程分数...

查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数好的,第一道题,刚开始做,就栽了个跟头,爽歪歪,至于怎么栽跟头的——需要分析题目,查询的是,查询的是(1)学生的信息…

window mysql集群视频_windows7实现mysql集群cluster-mysql簇

http://bitar.cn下载:mysql-cluster-gpl-7.4.7-winx64内置了:mysql-5.6.25,ndb-7.4.7文档可参考 mysql参考手册【mysql簇】管理(MGM)节点新建文件夹,存放ndb_mgm.exe 和ndb_mgmd.exe,就是管理(MGM)节点不需要mysql客户端端口监督程…

Human_height

Country/RegionAverage male heightAverage female heightSample population / age rangeMethodologyYearSourceArgentina1.745 m (5 ft 81⁄2 in)1.610 m (5 ft 31⁄2 in)19Measured1998–2001[1]Australia1.748 m (5 ft 9 in)1.634 m (5 ft 41⁄2 in)18Measured1995[2]Austra…

TreeSet()详解

/* * TreeSet存储对象的时候, 可以排序, 但是需要指定排序的算法 * * Integer能排序(有默认顺序), String能排序(有默认顺序), 自定义的类存储的时候出现异常(没有顺序) * * 如果想把自定义类的对象存入TreeSet进行排序, 那么必须实现Comparable接口 * 在类上implement Com…

Python的前景及应用

2019独角兽企业重金招聘Python工程师标准>>> 前景 Python在编程领域的占有率一直处于稳步上升之中,根据最新的数据,Python排名第六。前五名分别是 Java、C、PHP、C 和 VB. 作为一个很年轻的语言,Python的位置已经相当令人振奋了。…