CN115374415A - 一种基于SpringBoot的轻量级权限认证方法及框架 - Google Patents

一种基于SpringBoot的轻量级权限认证方法及框架 Download PDF

Info

Publication number
CN115374415A
CN115374415A CN202211301955.1A CN202211301955A CN115374415A CN 115374415 A CN115374415 A CN 115374415A CN 202211301955 A CN202211301955 A CN 202211301955A CN 115374415 A CN115374415 A CN 115374415A
Authority
CN
China
Prior art keywords
login
authentication
request
feedback
authority
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202211301955.1A
Other languages
English (en)
Other versions
CN115374415B (zh
Inventor
王振江
练渺渺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongjiao Yunzhi Digital Technology Co ltd
Original Assignee
Zhongjiao Yunzhi Digital Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhongjiao Yunzhi Digital Technology Co ltd filed Critical Zhongjiao Yunzhi Digital Technology Co ltd
Priority to CN202211301955.1A priority Critical patent/CN115374415B/zh
Publication of CN115374415A publication Critical patent/CN115374415A/zh
Application granted granted Critical
Publication of CN115374415B publication Critical patent/CN115374415B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Automation & Control Theory (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种基于SpringBoot的轻量级权限认证方法及框架,其中,基于SpringBoot的轻量级权限认证方法包括以下步骤:接受请求,校验发出请求的用户是否满足登录要求;若发出请求的用户不满足登录需求,则进行第一反馈,若发出请求的用户满足登录需求,则进行第二反馈;根据第二反馈,判断当前接口是否需要权限认证,若当前接口不需要权限认证,则进行第一登录进程;若当前接口需要权限认证,则进行权限认证,若权限认证满足预设条件,则进行第二登录进程,若权限认证不满足预设条件,则进行第三反馈。本方案,通过暴漏接口与提供工具类的方式使得权限框架对现系统的侵入较低,且操作方便,加快项目开发流程、提高系统稳定性。

Description

一种基于SpringBoot的轻量级权限认证方法及框架
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种基于SpringBoot的轻量级权限认证方法及框架。
背景技术
SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。在Shiro、Spring Security等框架的配置较为繁杂,不利于加快项目开发流程、提高系统稳定性,因此需要一种轻量级、开箱即用的、摆脱历史包袱的新型的api框架的设计。
发明内容
本申请的主要目的在于提供一种基于SpringBoot的轻量级权限认证方法,以改善相关技术中较为繁杂,不利于加快项目开发流程、提高系统稳定性的问题。
为了实现上述目的,本申请提供了一种基于SpringBoot的轻量级权限认证方法,包括以下步骤:
接受请求,校验发出请求的用户是否满足登录要求;若发出请求的用户不满足登录需求,则进行第一反馈,若发出请求的用户满足登录需求,则进行第二反馈;
根据所述第二反馈,判断当前接口是否需要权限认证,若当前接口不需要权限认证,则进行第一登录进程;若当前接口需要权限认证,则进行权限认证,若权限认证满足预设条件,则进行第二登录进程,若权限认证不满足预设条件,则进行第三反馈;
其中,以暴露接口的方式,通过自定义模块进行权限认证。
在本申请的一种实施例中,接受请求,校验发出请求的用户是否满足登录要求的方法包括:
接收接口中进入系统的请求;
判断所述请求的目标地址是否满足登录资格,若所述请求的目标地址不满足登录资格,则进行所述第一子反馈一;
若请求的目标地址满足登录资格,则判断当前用户是否请求登录;若当前用户未请求登录,则进行所述第一子反馈二;若当前用户请求登录,则进行第二反馈。
其中,第一子反馈一和第一子反馈二均为第一反馈的一种情况,包括终止程序以及相应的原因说明。
在本申请的一种实施例中,权限认证的方法包括:
在拦截器中预设token;
通过token对需要进行权限认证的接口进行权限认证。
在本申请的一种实施例中,所述第二登录进程包括:
进行登录认证,若认证登录通过,则进行登录。
其中,登录认证的方法包括:提供登录接口,系统完成校验发出请求的用户是否满足登录要求后,调用提供的工具类的登录方法,传入对应参数,返回登录信息;对于登录拦截的请求,以过滤器的形式获取请求中的token并进行认证。
自定义认证逻辑,认证成功后既可以在redis中存储session数据又返回token给前端使用。
在本申请的一种实施例中,所述工具类的登录方法包括踢人下线方法:
将当前登录用户的token设置成过期状态,过期状态等价于调用注销功能,区别是踢人下线会在下次访问对应的token时会提示已经被踢下线,下次请求时要求用户再次登录。
在本申请的一种实施例中,所述工具类的登录方法还包括账号封禁方法:
在一段时间内禁止某个账号的登录,时间可以自由设置,封禁不会导致下线,需要先通过踢人下线方法将当前登录用户的token设置成过期状态,再通过账号封禁方法在一段时间内禁止该用户账号的登录。
在本申请的一种实施例中,所述工具类的登录方法还包括Session会话方法:
提供两种作用域的Session:
分别为对应用户的session和对应token的session,当某一个用户多次登录时,token对应的session中存储的数据不一致,用户对应的session存储的数据一致。
用于提供专业的数据缓存组件,通过Session缓存一些高频读写的数据提供程序性能。
在本申请的一种实施例中,所述工具类的登录方法还包括注解式鉴权方法:
将权限限制到接口级别,将注解设置到接口上,调用所述接口时框架自动判断当前用户是否具有此权限。
在本申请的一种实施例中,所述工具类的登录方法还包括密码加密和单点登录,验证请求是否进行单点登录和密码加密,若两者同时满足,则可允许登录。
一种基于SpringBoot的轻量级权限认证框架,包括:
登录验证模块:接受请求,校验发出请求的用户是否满足登录要求;若发出请求的用户不满足登录需求,则进行第一反馈,若发出请求的用户满足登录需求,则进行第二反馈。
权限认证判断模块;根据所述第二反馈,判断当前接口是否需要权限认证,若当前接口不需要权限认证,则进行第一登录进程;若当前接口需要权限认证,则进行权限认证;
权限认证模块;若权限认证满足预设条件,则进行第二登录进程,若权限认证不满足预设条件,则进行第三反馈。
与现有技术相比,本申请的有益效果是:将登录认证框架与权限认证框架从耦合的系统中剥离出来,做到引入依赖即可使用。通过暴漏接口的方式提供对框架内的权限、登录方面的控制,方便根据业务对框架进行自定义的配置。抛弃了繁杂冗余的各种配置与传统的权限框架中大而沉的设计,提供登录、权限、Session等一系列解决方案,并由此基础上衍生出多种操作比如封禁账号、踢人下线等。
在实际的使用过程中,轻量简洁的配置大大加快了系统初期配置的进度。完善可用的框架也减轻了系统出现bug的可能性。
本发明提供一个轻量的开箱即用的登录权限框架,通过暴漏接口与提供工具类的方式使得权限框架对现系统的侵入较低,且操作方便,加快项目开发流程、提高系统稳定性。
附图说明
图1为根据本申请实施例提供的基于SpringBoot的轻量级权限认证方法的流程框图;
图2为根据本申请实施例提供的接受请求,校验发出请求的用户是否满足登录要求的方法的流程框图;
图3为根据本申请实施例提供的权限认证的方法的流程框图;
图4为根据本申请实施例提供的登录认证的方法的流程框图;
图5为根据本申请实施例提供的踢人下线方法的流程框图;
图6为根据本申请实施例提供的Session会话方法的流程框图;
图7为根据本申请实施例提供的注解式鉴权方法的流程框图;
图8为根据本申请实施例提供的基于SpringBoot的轻量级权限认证框架的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本申请中,术语“上”、“下”、“左”、“右”、“前”、“后”、“顶”、“底”、“内”、“外”、“中”、“竖直”、“水平”、“横向”、“纵向”等指示的方位或位置关系为基于附图所示的方位或位置关系。这些术语主要是为了更好地描述本申请及其实施例,并非用于限定所指示的装置、元件或组成部分必须具有特定方位,或以特定方位进行构造和操作。
并且,上述部分术语除了可以用于表示方位或位置关系以外,还可能用于表示其他含义,例如术语“上”在某些情况下也可能用于表示某种依附关系或连接关系。对于本领域普通技术人员而言,可以根据具体情况理解这些术语在本申请中的具体含义。
另外,术语“多个”的含义应为两个以及两个以上。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。在Shiro、Spring Security等框架的配置较为繁杂,不利于加快项目开发流程、提高系统稳定性,因此需要一种轻量级、开箱即用的、摆脱历史包袱的新型的api框架的设计。
下面将参考附图并结合实施例来详细说明本申请。
实施例
请参阅图1,本申请提供了一种基于SpringBoot的轻量级权限认证方法,包括以下步骤:
步骤S1、接受请求,校验发出请求的用户是否满足登录要求;若发出请求的用户不满足登录需求,则进行第一反馈,若发出请求的用户满足登录需求,则进行第二反馈;
步骤S2、根据所述第二反馈,判断当前接口是否需要权限认证,若当前接口不需要权限认证,则进行第一登录进程;若当前接口需要权限认证,则进行权限认证,若权限认证满足预设条件,则进行第二登录进程,若权限认证不满足预设条件,则进行第三反馈;
其中,以暴露接口的方式,通过自定义模块进行权限认证。
将登录认证框架与权限认证框架从耦合的系统中剥离出来,做到引入依赖即可使用。通过暴漏接口的方式提供对框架内的权限、登录方面的控制,方便根据业务对框架进行自定义的配置。抛弃了繁杂冗余的各种配置与传统的权限框架中大而沉的设计,提供登录、权限、Session等一系列解决方案,并由此基础上衍生出多种操作比如封禁账号、踢人下线等。
在实际的使用过程中,轻量简洁的配置大大加快了系统初期配置的进度。完善可用的框架也减轻了系统出现bug的可能性。
本发明提供一个轻量的开箱即用的登录权限框架,通过暴漏接口与提供工具类的方式使得权限框架对现系统的侵入较低,且操作方便,加快项目开发流程、提高系统稳定性。
请参阅图2,在步骤S1中,接受请求,校验发出请求的用户是否满足登录要求的方法包括:
步骤S11、接收接口中进入系统的请求;
步骤S12、判断所述请求的目标地址是否满足登录资格,若所述请求的目标地址不满足登录资格,则进行所述第一子反馈一;
步骤S13、若请求的目标地址满足登录资格,则判断当前用户是否请求登录;若当前用户未请求登录,则进行所述第一子反馈二;若当前用户请求登录,则进行第二反馈。
其中,第一子反馈一和第一子反馈二均为第一反馈的一种情况,包括终止程序以及相应的原因说明。
请参阅图3,在步骤S2中,权限认证的方法包括:
步骤S21、在拦截器中预设token;
步骤S22、通过token对需要进行权限认证的接口进行权限认证。
Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。
在步骤S2中,所述第二登录进程包括:
步骤S23、进行登录认证,若认证登录通过,则进行登录。
其中,请参阅图4,登录认证的方法包括:
步骤S231、提供登录接口;
步骤S232、系统完成校验发出请求的用户是否满足登录要求后,调用提供的工具类的登录方法,传入对应参数,返回登录信息;
步骤S233、对于登录拦截的请求,以过滤器的形式获取请求中的token并进行认证。
本过程中,可自定义认证逻辑,认证成功后既可以在redis中存储session数据又返回token给前端使用。
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
进一步的,请参阅图5,步骤S232中,所述工具类的登录方法包括踢人下线方法:
步骤S2321、将当前登录用户的token设置成过期状态;在下次访问对应的token时会提示已经被踢下线;
步骤S2322、下次请求时要求用户再次登录。
进一步的,所述工具类的登录方法还包括账号封禁方法:
在一段时间内禁止某个账号的登录,时间可以自由设置,封禁不会导致下线,需要先通过踢人下线方法将当前登录用户的token设置成过期状态,再通过账号封禁方法在一段时间内禁止该用户账号的登录。
进一步的,请参阅图6,所述工具类的登录方法还包括Session会话方法:
步骤S2323、提供两种作用域的Session:
步骤S2324、分别为对应用户的session和对应token的session,当某一个用户多次登录时,token对应的session中存储的数据不一致,用户对应的session存储的数据一致。
用于提供专业的数据缓存组件,通过Session缓存一些高频读写的数据提供程序性能。
当浏览器第一次访问服务器时,服务器创建一个session对象(该对象有一个唯一的id,一般称之为sessionId),服务器会将sessionId 以cookie的方式发送给浏览器。当浏览器再次访问服务器时,会将sessionId发送过来,服务器依据 sessionId就可以找到对应的session对象。
进一步的,请参阅图7,所述工具类的登录方法还包括注解式鉴权方法:
步骤S2325、将权限限制到接口级别;
步骤S2326、将注解设置到接口上;
步骤S2327、调用所述接口时框架自动判断当前用户是否具有此权限。
进一步的,所述工具类的登录方法还包括密码加密和单点登录,验证请求是否进行单点登录和密码加密,若两者同时满足,则可允许登录。
请参阅图8,本发明还提供一种基于SpringBoot的轻量级权限认证框架,包括:
登录验证模块:接受请求,校验发出请求的用户是否满足登录要求;若发出请求的用户不满足登录需求,则进行第一反馈,若发出请求的用户满足登录需求,则进行第二反馈
权限认证判断模块;根据所述第二反馈,判断当前接口是否需要权限认证,若当前接口不需要权限认证,则进行第一登录进程;若当前接口需要权限认证,则进行权限认证;
权限认证模块;若权限认证满足预设条件,则进行第二登录进程,若权限认证不满足预设条件,则进行第三反馈。
SpringBoot所具备的特征有:
(1)可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
(2)内嵌Tomcat或Jetty等Servlet容器;
(3)提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
(4)尽可能自动配置Spring容器;
(5)提供准备好的特性,如指标、健康检查和外部化配置;
(6)绝对没有代码生成,不需要XML配置。
SpringBoot框架中还有两个非常重要的策略:开箱即用和约定优于配置。开箱即用,Outofbox,是指在开发过程中,通过在MAVEN项目的pom文件中添加相关依赖包,然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑。约定优于配置,Convention over configuration,是一种由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。这一特点虽降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化。
SpringBoot应用系统开发模板的基本架构设计从前端到后台进行说明:前端常使用模板引擎,主要有FreeMarker和Thymeleaf,它们都是用Java语言编写的,渲染模板并输出相应文本,使得界面的设计与应用的逻辑分离,同时前端开发还会使用到Bootstrap、AngularJS、JQuery等;在浏览器的数据传输格式上采用Json,非xml,同时提供RESTfulAPI;SpringMVC框架用于数据到达服务器后处理请求;到数据访问层主要有Hibernate、MyBatis、JPA等持久层框架。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。本申请的主要目的在于提供一种基于SpringBoot的轻量级权限认证方法,以改善相关技术中较为繁杂,不利于加快项目开发流程、提高系统稳定性的问题。
为了实现上述目的,本申请提供了一种基于SpringBoot的轻量级权限认证方法,包括以下步骤:
接受请求,校验发出请求的用户是否满足登录要求;若发出请求的用户不满足登录需求,则进行第一反馈,若发出请求的用户满足登录需求,则进行第二反馈;
根据所述第二反馈,判断当前接口是否需要权限认证,若当前接口不需要权限认证,则进行第一登录进程;若当前接口需要权限认证,则进行权限认证,若权限认证满足预设条件,则进行第二登录进程,若权限认证不满足预设条件,则进行第三反馈;
其中,以暴露接口的方式,通过自定义模块进行权限认证。
在本申请的一种实施例中,接受请求,校验发出请求的用户是否满足登录要求的方法包括:
接收接口中进入系统的请求;
判断所述请求的目标地址是否满足登录资格,若所述请求的目标地址不满足登录资格,则进行第一子反馈一;
若请求的目标地址满足登录资格,则判断当前用户是否请求登录;若当前用户未请求登录,则进行第一子反馈二;若当前用户请求登录,则进行第二反馈。
其中,第一子反馈一和第一子反馈二均为第一反馈的一种情况,包括终止程序以及相应的原因说明。
在本申请的一种实施例中,权限认证的方法包括:
在拦截器中预设token;
通过token对需要进行权限认证的接口进行权限认证。
在本申请的一种实施例中,所述第二登录进程包括:
进行登录认证,若认证登录通过,则进行登录。
其中,登录认证的方法包括:提供登录接口,系统完成校验发出请求的用户是否满足登录要求后,调用提供的工具类的登录方法,传入对应参数,返回登录信息;对于登录拦截的请求,以过滤器的形式获取请求中的token并进行认证。
自定义认证逻辑,认证成功后既可以在redis中存储session数据又返回token给前端使用。
在本申请的一种实施例中,所述工具类的登录方法包括踢人下线方法:
将当前登录用户的token设置成过期状态,过期状态等价于调用注销功能,区别是踢人下线会在下次访问对应的token时会提示已经被踢下线,下次请求时要求用户再次登录。
在本申请的一种实施例中,所述工具类的登录方法还包括账号封禁方法:
在一段时间内禁止某个账号的登录,时间能自由设置,封禁不会导致下线,需要先通过踢人下线方法将当前登录用户的token设置成过期状态,再通过账号封禁方法在一段时间内禁止所述账号的登录。
在本申请的一种实施例中,所述工具类的登录方法还包括Session会话方法:
提供两种作用域的Session:
分别为对应用户的session和对应token的session,当某一个用户多次登录时,token对应的session中存储的数据不一致,用户对应的session存储的数据一致。
用于提供专业的数据缓存组件,通过Session缓存一些高频读写的数据提供程序性能。
在本申请的一种实施例中,所述工具类的登录方法还包括注解式鉴权方法:
将权限限制到接口级别,将注解设置到接口上,调用所述接口时框架自动判断当前用户是否具有此权限。
在本申请的一种实施例中,所述工具类的登录方法还包括密码加密和单点登录,验证请求是否进行单点登录和密码加密,若两者同时满足,则允许登录。
一种基于SpringBoot的轻量级权限认证框架,包括:
登录验证模块:接受请求,校验发出请求的用户是否满足登录要求;若发出请求的用户不满足登录需求,则进行第一反馈,若发出请求的用户满足登录需求,则进行第二反馈。
权限认证判断模块;根据所述第二反馈,判断当前接口是否需要权限认证,若当前接口不需要权限认证,则进行第一登录进程;若当前接口需要权限认证,则进行权限认证;
权限认证模块;若权限认证满足预设条件,则进行第二登录进程,若权限认证不满足预设条件,则进行第三反馈。
与现有技术相比,本申请的有益效果是:将登录认证框架与权限认证框架从耦合的系统中剥离出来,做到引入依赖即可使用。通过暴漏接口的方式提供对框架内的权限、登录方面的控制,方便根据业务对框架进行自定义的配置。抛弃了繁杂冗余的各种配置与传统的权限框架中大而沉的设计,提供登录、权限、Session等一系列解决方案,并由此基础上衍生出多种操作比如封禁账号、踢人下线等。
在实际的使用过程中,轻量简洁的配置大大加快了系统初期配置的进度。完善可用的框架也减轻了系统出现bug的可能性。
本发明提供一个轻量的开箱即用的登录权限框架,通过暴漏接口与提供工具类的方式使得权限框架对现系统的侵入较低,且操作方便,加快项目开发流程、提高系统稳定性。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本申请中,术语“上”、“下”、“左”、“右”、“前”、“后”、“顶”、“底”、“内”、“外”、“中”、“竖直”、“水平”、“横向”、“纵向”等指示的方位或位置关系为基于附图所示的方位或位置关系。这些术语主要是为了更好地描述本申请及其实施例,并非用于限定所指示的装置、元件或组成部分必须具有特定方位,或以特定方位进行构造和操作。
并且,上述部分术语除了可以用于表示方位或位置关系以外,还可能用于表示其他含义,例如术语“上”在某些情况下也可能用于表示某种依附关系或连接关系。对于本领域普通技术人员而言,可以根据具体情况理解这些术语在本申请中的具体含义。
另外,术语“多个”的含义应为两个以及两个以上。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。在Shiro、Spring Security等框架的配置较为繁杂,不利于加快项目开发流程、提高系统稳定性,因此需要一种轻量级、开箱即用的、摆脱历史包袱的新型的api框架的设计。
下面将参考附图并结合实施例来详细说明本申请。
实施例
请参阅图1,本申请提供了一种基于SpringBoot的轻量级权限认证方法,包括以下步骤:
步骤S1、接受请求,校验发出请求的用户是否满足登录要求;若发出请求的用户不满足登录需求,则进行第一反馈,若发出请求的用户满足登录需求,则进行第二反馈;
步骤S2、根据所述第二反馈,判断当前接口是否需要权限认证,若当前接口不需要权限认证,则进行第一登录进程;若当前接口需要权限认证,则进行权限认证,若权限认证满足预设条件,则进行第二登录进程,若权限认证不满足预设条件,则进行第三反馈;
其中,以暴露接口的方式,通过自定义模块进行权限认证。
将登录认证框架与权限认证框架从耦合的系统中剥离出来,做到引入依赖即可使用。通过暴漏接口的方式提供对框架内的权限、登录方面的控制,方便根据业务对框架进行自定义的配置。抛弃了繁杂冗余的各种配置与传统的权限框架中大而沉的设计,提供登录、权限、Session等一系列解决方案,并由此基础上衍生出多种操作比如封禁账号、踢人下线等。
在实际的使用过程中,轻量简洁的配置大大加快了系统初期配置的进度。完善可用的框架也减轻了系统出现bug的可能性。
本发明提供一个轻量的开箱即用的登录权限框架,通过暴漏接口与提供工具类的方式使得权限框架对现系统的侵入较低,且操作方便,加快项目开发流程、提高系统稳定性。
请参阅图2,在步骤S1中,接受请求,校验发出请求的用户是否满足登录要求的方法包括:
步骤S11、接收接口中进入系统的请求;
步骤S12、判断所述请求的目标地址是否满足登录资格,若所述请求的目标地址不满足登录资格,则进行第一子反馈一;
步骤S13、若请求的目标地址满足登录资格,则判断当前用户是否请求登录;若当前用户未请求登录,则进行第一子反馈二;若当前用户请求登录,则进行第二反馈。
其中,第一子反馈一和第一子反馈二均为第一反馈的一种情况,包括终止程序以及相应的原因说明。
请参阅图3,在步骤S2中,权限认证的方法包括:
步骤S21、在拦截器中预设token;
步骤S22、通过token对需要进行权限认证的接口进行权限认证。
Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。
在步骤S2中,所述第二登录进程包括:
步骤S23、进行登录认证,若认证登录通过,则进行登录。
其中,请参阅图4,登录认证的方法包括:
步骤S231、提供登录接口;
步骤S232、系统完成校验发出请求的用户是否满足登录要求后,调用提供的工具类的登录方法,传入对应参数,返回登录信息;
步骤S233、对于登录拦截的请求,以过滤器的形式获取请求中的token并进行认证。
本过程中,可自定义认证逻辑,认证成功后既可以在redis中存储session数据又返回token给前端使用。
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
进一步的,请参阅图5,步骤S232中,所述工具类的登录方法包括踢人下线方法:
步骤S2321、将当前登录用户的token设置成过期状态;在下次访问对应的token时会提示已经被踢下线;
步骤S2322、下次请求时要求用户再次登录。
进一步的,所述工具类的登录方法还包括账号封禁方法:
在一段时间内禁止某个账号的登录,时间能自由设置,封禁不会导致下线,需要先通过踢人下线方法将当前登录用户的token设置成过期状态,再通过账号封禁方法在一段时间内禁止所述账号的登录。
进一步的,请参阅图6,所述工具类的登录方法还包括Session会话方法:
步骤S2323、提供两种作用域的Session:
步骤S2324、分别为对应用户的session和对应token的session,当某一个用户多次登录时,token对应的session中存储的数据不一致,用户对应的session存储的数据一致。
用于提供专业的数据缓存组件,通过Session缓存一些高频读写的数据提供程序性能。
当浏览器第一次访问服务器时,服务器创建一个session对象(该对象有一个唯一的id,一般称之为sessionId),服务器会将sessionId 以cookie的方式发送给浏览器。当浏览器再次访问服务器时,会将sessionId发送过来,服务器依据 sessionId就可以找到对应的session对象。
进一步的,请参阅图7,所述工具类的登录方法还包括注解式鉴权方法:
步骤S2325、将权限限制到接口级别;
步骤S2326、将注解设置到接口上;
步骤S2327、调用所述接口时框架自动判断当前用户是否具有此权限。
进一步的,所述工具类的登录方法还包括密码加密和单点登录,验证请求是否进行单点登录和密码加密,若两者同时满足,则允许登录。
请参阅图8,本发明还提供一种基于SpringBoot的轻量级权限认证框架,包括:
登录验证模块:接受请求,校验发出请求的用户是否满足登录要求;若发出请求的用户不满足登录需求,则进行第一反馈,若发出请求的用户满足登录需求,则进行第二反馈
权限认证判断模块;根据所述第二反馈,判断当前接口是否需要权限认证,若当前接口不需要权限认证,则进行第一登录进程;若当前接口需要权限认证,则进行权限认证;
权限认证模块;若权限认证满足预设条件,则进行第二登录进程,若权限认证不满足预设条件,则进行第三反馈。
SpringBoot所具备的特征有:
(1)可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
(2)内嵌Tomcat或Jetty等Servlet容器;
(3)提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
(4)尽可能自动配置Spring容器;
(5)提供准备好的特性,如指标、健康检查和外部化配置;
(6)绝对没有代码生成,不需要XML配置。
SpringBoot框架中还有两个非常重要的策略:开箱即用和约定优于配置。开箱即用,Outofbox,是指在开发过程中,通过在MAVEN项目的pom文件中添加相关依赖包,然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑。约定优于配置,Convention over configuration,是一种由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。这一特点虽降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化。
SpringBoot应用系统开发模板的基本架构设计从前端到后台进行说明:前端常使用模板引擎,主要有FreeMarker和Thymeleaf,它们都是用Java语言编写的,渲染模板并输出相应文本,使得界面的设计与应用的逻辑分离,同时前端开发还会使用到Bootstrap、AngularJS、JQuery等;在浏览器的数据传输格式上采用Json,非xml,同时提供RESTfulAPI;SpringMVC框架用于数据到达服务器后处理请求;到数据访问层主要有Hibernate、MyBatis、JPA等持久层框架。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种基于SpringBoot的轻量级权限认证方法,其特征在于,包括以下步骤:
接受请求,校验发出请求的用户是否满足登录要求;若发出请求的用户不满足登录需求,则进行第一反馈,若发出请求的用户满足登录需求,则进行第二反馈;
根据所述第二反馈,判断当前接口是否需要权限认证,若当前接口不需要权限认证,则进行第一登录进程;若当前接口需要权限认证,则进行权限认证,若权限认证满足预设条件,则进行第二登录进程,若权限认证不满足预设条件,则进行第三反馈;
其中,以暴露接口的方式,通过自定义模块进行权限认证。
2.如权利要求1所述的一种基于SpringBoot的轻量级权限认证方法,其特征在于,
接受请求,校验发出请求的用户是否满足登录要求的方法包括:
接收接口中进入系统的请求;
判断所述请求的目标地址是否满足登录资格,若所述请求的目标地址不满足登录资格,则进行第一子反馈一;
若请求的目标地址满足登录资格,则判断当前用户是否请求登录;若当前用户未请求登录,则进行第一子反馈二;若当前用户请求登录,则进行第二反馈。
3.如权利要求1所述的一种基于SpringBoot的轻量级权限认证方法,其特征在于,
权限认证的方法包括:
在拦截器中预设token;
通过token对需要进行权限认证的接口进行权限认证。
4.如权利要求1所述的一种基于SpringBoot的轻量级权限认证方法,其特征在于,所述第二登录进程包括:
进行登录认证,若认证登录通过,则进行登录;
其中,登录认证的方法包括:提供登录接口,系统完成校验发出请求的用户是否满足登录要求后,调用提供的工具类的登录方法,传入对应参数,返回登录信息;对于登录拦截的请求,以过滤器的形式获取请求中的token并进行认证。
5.如权利要求4所述的一种基于SpringBoot的轻量级权限认证方法,其特征在于,所述工具类的登录方法包括踢人下线方法:
将当前登录用户的token设置成过期状态;在下次访问对应的token时会提示已经被踢下线;
下次请求时要求用户再次登录。
6.如权利要求5所述的一种基于SpringBoot的轻量级权限认证方法,其特征在于,所述工具类的登录方法还包括账号封禁方法:
在一段时间内禁止某个账号的登录,时间能自由设置,封禁不会导致下线,需要先通过踢人下线方法将当前登录用户的token设置成过期状态,再通过账号封禁方法在一段时间内禁止所述账号的登录。
7.如权利要求4所述的一种基于SpringBoot的轻量级权限认证方法,其特征在于,所述工具类的登录方法还包括Session会话方法:
提供两种作用域的Session:
分别为对应用户的session和对应token的session,当某一个用户多次登录时,token对应的session中存储的数据不一致,用户对应的session存储的数据一致。
8.如权利要求4所述的一种基于SpringBoot的轻量级权限认证方法,其特征在于,所述工具类的登录方法还包括注解式鉴权方法:
将权限限制到接口级别,将注解设置到接口上,调用所述接口时框架自动判断当前用户是否具有此权限。
9.如权利要求7所述的一种基于SpringBoot的轻量级权限认证方法,其特征在于,
所述工具类的登录方法还包括密码加密和单点登录,验证请求是否进行单点登录和密码加密,若两者同时满足,则允许登录。
10.一种基于SpringBoot的轻量级权限认证框架,其特征在于,包括:
登录验证模块:接受请求,校验发出请求的用户是否满足登录要求;若发出请求的用户不满足登录需求,则进行第一反馈,若发出请求的用户满足登录需求,则进行第二反馈
权限认证判断模块;根据所述第二反馈,判断当前接口是否需要权限认证,若当前接口不需要权限认证,则进行第一登录进程;若当前接口需要权限认证,则进行权限认证;
权限认证模块;若权限认证满足预设条件,则进行第二登录进程,若权限认证不满足预设条件,则进行第三反馈。
CN202211301955.1A 2022-10-24 2022-10-24 一种基于SpringBoot的轻量级权限认证方法及框架 Active CN115374415B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211301955.1A CN115374415B (zh) 2022-10-24 2022-10-24 一种基于SpringBoot的轻量级权限认证方法及框架

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211301955.1A CN115374415B (zh) 2022-10-24 2022-10-24 一种基于SpringBoot的轻量级权限认证方法及框架

Publications (2)

Publication Number Publication Date
CN115374415A true CN115374415A (zh) 2022-11-22
CN115374415B CN115374415B (zh) 2023-04-07

Family

ID=84073316

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211301955.1A Active CN115374415B (zh) 2022-10-24 2022-10-24 一种基于SpringBoot的轻量级权限认证方法及框架

Country Status (1)

Country Link
CN (1) CN115374415B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110602052A (zh) * 2019-08-15 2019-12-20 平安科技(深圳)有限公司 微服务处理方法及服务器
CN111010396A (zh) * 2019-12-17 2020-04-14 紫光云(南京)数字技术有限公司 一种互联网身份认证管理方法
CN111209582A (zh) * 2020-01-03 2020-05-29 平安科技(深圳)有限公司 请求认证方法、装置、设备及存储介质
CN111865920A (zh) * 2020-06-18 2020-10-30 多加网络科技(北京)有限公司 一种网关认证和身份鉴权的平台及其方法
US20220198054A1 (en) * 2020-12-18 2022-06-23 Paypal, Inc. Rights management regarding user data associated with data lifecycle discovery platform

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110602052A (zh) * 2019-08-15 2019-12-20 平安科技(深圳)有限公司 微服务处理方法及服务器
CN111010396A (zh) * 2019-12-17 2020-04-14 紫光云(南京)数字技术有限公司 一种互联网身份认证管理方法
CN111209582A (zh) * 2020-01-03 2020-05-29 平安科技(深圳)有限公司 请求认证方法、装置、设备及存储介质
CN111865920A (zh) * 2020-06-18 2020-10-30 多加网络科技(北京)有限公司 一种网关认证和身份鉴权的平台及其方法
US20220198054A1 (en) * 2020-12-18 2022-06-23 Paypal, Inc. Rights management regarding user data associated with data lifecycle discovery platform

Also Published As

Publication number Publication date
CN115374415B (zh) 2023-04-07

Similar Documents

Publication Publication Date Title
Sanderson Programming google app engine: build and run scalable web apps on google's infrastructure
US5864665A (en) Auditing login activity in a distributed computing environment
US7861290B2 (en) Non-invasive insertion of pagelets
Relan Building REST APIs with Flask
US20200201843A1 (en) Optimization of chaincode statements
US10908971B1 (en) Method and system for generating a customizable connector
Hofmann et al. Microservices Best Practices for Java
Hausenblas et al. Programming Kubernetes: Developing cloud-native applications
Sanderson Programming Google App Engine with Python: Build and Run Scalable Python Apps on Google's Infrastructure
CN115374415B (zh) 一种基于SpringBoot的轻量级权限认证方法及框架
JP2023513848A (ja) ブロックチェーンに関連するサービスのプラットフォームのための計算サービス
CN114896584B (zh) 一种Hive数据权限控制代理层方法及系统
Kurniawan Servlet & JSP: A Tutorial
Vester RESTful API lifecycle management
US11379434B2 (en) Efficient and automatic database patching using elevated privileges
CN112711628A (zh) 数据交互方法、装置和中台
Sanderson Programming Google App Engine with Java: Build & Run Scalable Java Applications on Google's Infrastructure
Kuepper Hands-On Swift 5 Microservices Development: Build microservices for mobile and web applications using Swift 5 and Vapor 4
Aryal MERN stack with modern web practices
CN115114052B (zh) 一种智能提供数据库微服务的方法和装置
US11941142B2 (en) Dedicated SQL services for cross-system SQL access to an application-server-managed database
Komulainen Developing a web API with. NET Core on an AWS Lambda platform
US20230376501A1 (en) Asik: modular interface to blockchain
Omole Server Side development with Node. js and Koa. js Quick Start Guide: Build robust and scalable web applications with modern JavaScript techniques
Kuksenko Distribution of crew deliveries messages in the airline's information network environment

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant