一种基于B/S架构的权限控制方法转让专利

申请号 : CN201911362862.8

文献号 : CN111931133B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 夏文昊邢红瑞汪义舟

申请人 : 长扬科技(北京)有限公司

摘要 :

本发明提供了一种基于B/S架构的权限控制方法,包括基于spring自定义权限校验,包括登录权限校验和页面权限校验;对当前用户的权限校验,根据不同用户权限等级,获取不同的数据;建立使浏览器端和服务器端解耦的架构;基于spring自定义注解并实现AOP切面;将项目根据功能模块化,并将项目的功能模块分离解耦合。实现了易于后期的维护与拓展,有效的保护信息的安全,前端与后端完全解耦,前端人员专注页面渲染,后端人员专注业务处理,加快整体响应速度,快速问题定位,减少后端服务器的并发与负载压力,提升开发效率等。

权利要求 :

1.一种基于B/S架构的权限控制方法,其特征在于,包括如下步骤:步骤a:基于spring自定义权限校验,包括登录权限校验和页面权限校验;

步骤b:对当前用户的权限校验,根据不同用户权限等级,获取不同的数据;

步骤c:利用nginx服务器与tomcat服务器作为运行承载服务器建立使浏览器端和服务器端解耦的架构;

步骤d:基于spring自定义注解并实现AOP切面;

步骤e:将项目根据功能模块化,并将项目的功能模块分离解耦合。

2.根据权利要求1所述的基于B/S架构的权限控制方法,其特征在于,步骤a具体包括通过spirng拦截器拦截所有发送至服务器端接口请求,并添加权限处理类;所述权限处理类包括登录成功处理类、登录失败处理类和服务器端接口请求拦截类;登录成功处理类在用户登录成功后将用户登录信息存入session中进行保存,登录失败处理类在用户登录失败时,向浏览器端返回登录失败信息,并修改登录限制信息;服务器端接口请求拦截类拦截访问请求,并从session中获取用户登录相关信息,判定用户是否登录以及用户对此页面访问的权限等级,若用户登录成功,根据用户对此页面访问的权限等级展示此页面的内容。

3.根据权利要求2所述的基于B/S架构的权限控制方法,其特征在于,步骤b中对当前用户的权限校验,根据不同用户权限等级,返回不同的数据,具体包括:对请求获取数据的用户进行权限校验,根据用户的权限等级,返回所属权限内的数据量和数据格式至浏览器端。

4.根据权利要求3所述的基于B/S架构的权限控制方法,其特征在于,步骤c具体包括:nginx服务器作为承载浏览器端代码的服务器,tomcat服务器承载服务器端程序代码,浏览器端请求接口利用nginx服务器作为转发路由,将浏览器端的请求转发至tomcat服务器,tomcat服务器根据浏览器端的请求返回数据至nginx服务器,nginx服务器将返回的数据转发至浏览器端。

5.根据权利要求4所述的基于B/S架构的权限控制方法,其特征在于,步骤d中基于spring自定义注解并实现AOP切面具体包括:定义AOP切面处理类,并在该类中定义切入点与切面方法,浏览器端调用服务器端Controller类中的方法时,调用动态生成的代理类的代理对象,并将该方法作为参数传入定义的切面方法中,通过反射获取该方法参数信息,对方法的参数进行判定,若参数中包含特殊符号则将此方法拦截,不执行该方法逻辑,并返回至浏览器端,若方法中添加了自定义注解,则将方法的详细信息保存为日志实体存入数据库中。

说明书 :

一种基于B/S架构的权限控制方法

技术领域

[0001] 本发明涉及B/S架构技术领域,具体地涉及一种基于B/S架构的权限控制方法

背景技术

[0002] 随着科技的不断发展,B/S架构逐渐取代C/S架构成为软件架构的主流模式,各种行业的管理系统等都开始使用基于B/S的软件架构模式进行开发,然而B/S架构的软件项目
却因为其耦合性过高,随着项目迭代周期的不断增长,开发维护的成本愈发高昂,所以一种
合理的基于B/S架构的权限分配管理成为了B/S架构软件项目的重中之重。
[0003] 现有JAVA的B/S架构模式权限管理的缺点:
[0004] 前端页面由后端进行渲染并由浏览器进行解析,前后端耦合严重,项目迭代后期开发与维护的成本大大提高;
[0005] 后端模块混杂,模块之间耦合严重,一个模块的变动都将影响其他模块的正常运行。
[0006] 权限控制过于简洁,权限只划分至菜单与功能,无法做到更加细致的权限划分。

发明内容

[0007] (一)发明目的
[0008] 本发明的目的是提供一种基于B/S架构的权限控制方法,克服现有技术存在的缺陷。
[0009] (二)技术方案
[0010] 为解决上述问题,本发明一种基于B/S架构的权限控制方法,包括如下步骤:
[0011] 步骤a:基于spring自定义权限校验,包括登录权限校验和页面权限校验;
[0012] 步骤b:对当前用户的权限校验,根据不同用户权限等级,获取不同的数据;
[0013] 步骤c:建立使浏览器端和服务器端解耦的架构;
[0014] 步骤d:基于spring自定义注解并实现AOP切面;
[0015] 步骤e:将项目根据功能模块化,并将项目的功能模块分离,解耦合。
[0016] 进一步的,步骤a具体包括通过spirng拦截器拦截所有发送至服务器端接口请求,并添加权限处理类;所述权限处理类包括登录成功处理类、登录失败处理类和服务器端接
口请求拦截类;登录成功处理类在用户登录成功后将用户登录信息存入session中进行保
存,登录失败处理类在用户登录失败时,向浏览器端返回登录失败信息,并修改登录限制信
息;服务器端接口请求拦截类拦截访问请求,并从session中获取用户登录相关信息,判定
用户是否登录以及用户对此页面访问的权限等级,若用户登录成功,根据用户对此页面访
问的权限等级展示此页面的内容。
[0017] 进一步的,步骤b中对当前用户的权限校验,根据不同用户权限等级,返回不同的数据,具体包括:对请求获取数据的用户进行权限校验,根据用户的权限等级,返回所属权
限内的数据量和数据格式至浏览器端。
[0018] 进一步的,步骤c中建立使浏览器端和服务器端解耦的架构具体包括:
[0019] 利用nginx服务器与tomcat服务器作为运行承载服务器,其中,nginx服务器作为承载浏览器端代码的服务器,tomcat服务器承载服务器端程序代码,浏览器端请求接口利
用nginx服务器作为转发路由,将浏览器端的请求转发至tomcat服务器,tomcat服务器根据
浏览器端的请求返回数据至nginx服务器,nginx服务器将返回的数据转发至浏览器端。
[0020] 进一步的,步骤d中基于spring自定义注解并实现AOP切面具体包括:
[0021] 定义AOP切面处理类,并在该类中定义切入点与切面方法,浏览器端调用服务器端Controller类中的方法时,调用动态生成的代理类的代理对象,并将该方法作为参数传入
定义的切面方法中,通过反射获取该方法参数信息,对方法的参数进行判定,若参数中包含
特殊符号则将此方法拦截,不执行该方法逻辑,并返回至浏览器端,若方法中添加了自定义
注解,则将方法的详细信息保存为日志实体存入数据库中。
[0022] (三)有益效果
[0023] 本发明的上述技术方案具有如下有益的技术效果:扩展性强,因高度解耦,易于后期的维护与拓展。安全性可靠的权限管理,细分到数据级别的权限管理,更有效的保护信息
的安全。前后端分离的架构设计,使得前端与后端完全解耦,前端人员专注页面渲染,后端
人员专注业务处理,加快整体响应速度,快速问题定位,减少后端服务器的并发与负载压
力,提升开发效率等。

附图说明

[0024] 附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0025] 图1为本发明登录鉴权与页面鉴权工作流程示意图。
[0026] 图2为本发明根据不同用户权限等级,获取不同的数据的工作流程示意图;
[0027] 图3为本发明前后端架构示意图;
[0028] 图4为本发明基于spring实现AOP切面功能与自定义注解的实现原理图;
[0029] 图5位本发明项目根据功能模块化,并将项目的功能模块分离解耦合后工作流程图。

具体实施方式

[0030] 为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发
明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本
发明的概念。
[0031] 显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施
例,都属于本发明保护的范围。
[0032] 此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
[0033] 一种基于B/S架构的权限控制方法,包括如下步骤:
[0034] 步骤a:基于spring自定义权限校验,包括登录权限校验和页面权限校验;
[0035] 步骤b:对当前用户的权限校验,根据不同用户权限等级,获取不同的数据;
[0036] 步骤c:建立使浏览器端和服务器端解耦的架构;
[0037] 步骤d:基于spring自定义注解并实现AOP切面;
[0038] 步骤e:将项目根据功能模块化,并将项目的功能模块分离,解耦合。
[0039] 进一步的,步骤a具体包括通过spirng拦截器拦截所有发送至服务器端接口请求,并添加权限处理类;所述权限处理类包括登录成功处理类、登录失败处理类和服务器端接
口请求拦截类;登录成功处理类在用户登录成功后将用户登录信息存入session中进行保
存,登录失败处理类在用户登录失败时,向浏览器端返回登录失败信息,并修改登录限制信
息;服务器端接口请求拦截类拦截访问请求,并从session中获取用户登录相关信息,判定
用户是否登录以及用户对此页面访问的权限等级,若用户登录成功,根据用户对此页面访
问的权限等级展示此页面的内容。
[0040] 进一步的,步骤b中对当前用户的权限校验,根据不同用户权限等级,返回不同的数据,具体包括:对请求获取数据的用户进行权限校验,根据用户的权限等级,返回所属权
限内的数据量和数据格式至浏览器端。
[0041] 进一步的,步骤c中建立使浏览器端和服务器端解耦的架构具体包括:
[0042] 利用nginx服务器与tomcat服务器作为运行承载服务器,其中,nginx服务器作为承载浏览器端代码的服务器,tomcat服务器承载服务器端程序代码,浏览器端请求接口利
用nginx服务器作为转发路由,将浏览器端的请求转发至tomcat服务器,tomcat服务器根据
浏览器端的请求返回数据至nginx服务器,nginx服务器将返回的数据转发至浏览器端。
[0043] 进一步的,步骤d中基于spring自定义注解并实现AOP切面具体包括:
[0044] 定义AOP切面处理类,并在该类中定义切入点与切面方法,浏览器端调用服务器端Controller类中的方法时,调用动态生成的代理类的代理对象,并将该方法作为参数传入
定义的切面方法中,通过反射获取该方法参数信息,对方法的参数进行判定,若参数中包含
特殊符号则将此方法拦截,不执行该方法逻辑,并返回至浏览器端,若方法中添加了自定义
注解,则将方法的详细信息保存为日志实体存入数据库中。
[0045] 如图1所示,本发明基于spring自定义了权限校验,进行登录时的权限校验与页面访问的权限校验两种通过spirng拦截器首先拦截到所有的后端接口请求,并添加权限处理
类,例如登录成功处理类,登录失败处理类,接口请求拦截类,若用户登录成功,则会将用户
登录信息存入session中进行保存,后端接口请求拦截类在拦截到请求后,会去session中
获取用户登录相关信息,判定用户是否登录,用户对此页面的权限等级,并根据判定显示用
户是否可看到页面,和此页面的展示内容。
[0046] 本发明独有的将权限的检验处理细分至数据层面,所有经由数据库查询出的数据在返回至前端前,需要对当前用户进行权限校验的判断,根据权限等级的不同,可获取的数
据数量,数据格式也不相同。如图2所示,请求用户1和请求用户2分别向服务器发送调用请
求,服务器根据请求用户1的权限和请求用户2的权限对请求分别进行处理,返回相应的权
限数据。
[0047] 如图3所示,本发明使用架构模式使前后端的模块开发完全分离,后端只负责数据的处理与提供,前端只负责页面的渲染,为实现此架构的模式,本发明采取nginx与tomcat
两个服务器运行作为本发明的运行承载服务器,其中nginx作为承载前端的服务器与承载
后端代码的tomcat完全进行了分离,前端请求接口使用nginx做了路由转发,将请求转发至
tomcat服务器,而后tomcat服务器将请求处理后提供数据返回至承载前端代码的nginx服
务器,前端获取数据后进行页面的渲染和重定向等逻辑。
[0048] 如图4所示,本发明基于spring实现AOP切面功能与自定义注解的实现,首先本发明定义了一个AOP切面处理类,并在类中定义了切入点与切面方法,在项目运行过程中,前
端调用后端Controller类中的方法时,并不会真正的去调用Controller中的方法,而是调
用了动态生成的代理类的代理对象,并将该方法作为参数传入自定义切面类中中的切面方
法中,通过反射获取该方法参数的详细信息,首先对方法的参数进行判定,参数中有特殊符
号时直接将此方法拦截,不执行该方法内逻辑,并将结果返回至前端,若方法上添加了自定
义注解,则将方法的详细信息保存为日志实体存入数据库中。
[0049] 如图5所示,本发明采用新的架构模式,将项目以功能模块划分,并将项目的功能模块进行分割,完全解耦合,分离出的功能模块完全等价与独立项目,各个功能模块项目相
辅相成,一起运行则为一个完整的项目,分开独立运行也不会受到其他项目的影响。这样可
以在一个功能模块需要迭代更新时不会影响其他的功能模块的使用,在需要迭代的功能模
块迭代完成后只需重新编译修改后的功能模块即可,整个项目的功能不受到影响。图5中,
主模块对前端请求中主要功能部分进行处理后交由服务器,由服务器对数据库数据进行操
作,次要功能则直接通过辅模块进行处理并对数据库数据进行操作。
[0050] 本发明大大降低B/S类型项目的耦合性,降低该类项目迭代后期的开发与维护成本,方便项目的权限划分,以及在数据层面上的权限判定。
[0051] 应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何
修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨
在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修
改例。
[0052] 以上参照本发明的实施例对本发明予以了说明。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本发明的范围。本发明的范围由所附权利要求及其等价物限定。
不脱离本发明的范围,本领域技术人员可以做出多种替换和修改,这些替换和修改都应落
在本发明的范围之内。
[0053] 尽管已经详细描述了本发明的实施方式,但是应该理解的是,在不偏离本发明的精神和范围的情况下,可以对本发明的实施方式做出各种改变、替换和变更。
[0054] 显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或
变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或
变动仍处于本发明创造的保护范围之中。