一种基于教育系统的权限校验方法及电子设备与流程

文档序号:17082657发布日期:2019-03-09 00:27阅读:214来源:国知局
一种基于教育系统的权限校验方法及电子设备与流程

本发明涉及计算机技术领域,尤其涉及一种基于教育系统的权限校验方法及电子设备。



背景技术:

现有技术中,往往数据和服务的安全性难以得到保证,例如用户在登录之后,长时间未操作,此时如果再进行操作,则增加了风险,并且用户的权限难以管理,特别是用户、角色、权限之间容易交错,容易出现人为操作的错误。

因此,现有技术还有待于改进和发展。



技术实现要素:

鉴于上述现有技术的不足,本发明的目的在于提供一种基于教育系统的权限校验方法及电子设备,旨在解决现有技术中数据、服务的安全性难以保证的问题。

本发明的技术方案如下:

一种基于教育系统的权限校验方法,其中,包括步骤:

a、当用户请求操作时,获取请求中所携带的标识,判断所述标识是否合法;

b、当所述标识合法时,根据所述标识获取用户id,并在数据库中查询相应的用户id所具有的角色是否失效;

c、若用户id所具有的角色未失效,则判断相应的角色是否具有相应操作的权限,如有则执行相应的操作,并返回操作结果至客户端。

所述的基于教育系统的权限校验方法,其中,所述步骤a之前还包括:

预先为角色分配相应的权限,并根据用户id为用户分配相应的角色。

所述的基于教育系统的权限校验方法,其中,所述步骤a之前还包括:

当用户进行登录时,获取用户输入的账号和密码,并进行验证,当验证通过时,根据所述用户的角色分配相应的权限列表,并创建标识以及将所述标识返回至客户端。

所述的基于教育系统的权限校验方法,其中,当验证不通过时,则返回报错信息至客户端。

所述的基于教育系统的权限校验方法,其中,所述步骤b中,当所述标识不合法时,则退出流程。

所述的基于教育系统的权限校验方法,其中,在创建标识后,保存所创建的标识。

所述的基于教育系统的权限校验方法,其中,所述步骤b中,当所述角色失效时,则退出流程。

一种电子设备,其中,包括:

处理器,适于实现各指令,以及

存储设备,适于存储多条指令,所述指令适于由处理器加载并执行:

当用户请求操作时,获取请求中所携带的标识,判断所述标识是否合法;

当所述标识合法时,根据所述标识获取用户id,并在数据库中查询相应的用户id所具有的角色是否失效;

若用户id所具有的角色未失效,则判断相应的角色是否具有相应操作的权限,如有则执行相应的操作,并返回操作结果至客户端。

一种非易失性计算机可读存储介质,其中,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行所述的基于教育系统的权限校验方法。

一种计算机程序产品,其中,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被处理器执行时,使所述处理器执行所述的基于教育系统的权限校验方法。

有益效果:通过本发明,用户登录才能访问和操作,保证了数据和服务的安全性。为用户授权,在管理平台可以很好地控制管理员的操作,将管理员的操作范围细化,避免了人为操作的错误。并且用户、角色、权限分开,保证了扩展性。

附图说明

图1为本发明一种基于教育系统的权限校验方法较佳实施例的流程图。

图2为本发明一种电子设备较佳实施例的结构框图。

具体实施方式

本发明提供一种基于教育系统的权限校验方法及电子设备,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

请参阅图1,图1为本发明一种基于教育系统的权限校验方法较佳实施例的流程图,如图所示,其包括步骤:

s1、当用户请求操作时,获取请求中所携带的标识,判断所述标识是否合法;

s2、当所述标识合法时,根据所述标识获取用户id,并在数据库中查询相应的用户id所具有的角色是否失效;

s3、若用户id所具有的角色未失效,则判断相应的角色是否具有相应操作的权限,如有则执行相应的操作,并返回操作结果至客户端。

通过本发明,用户登录才能访问和操作,保证了数据和服务的安全性。为用户授权,在管理平台可以很好地控制管理员的操作,将管理员的操作范围细化,避免了人为操作的错误。并且用户、角色、权限分开,保证了扩展性。

进一步,所述步骤s1之前还包括:

预先为角色分配相应的权限,并根据用户id为用户分配相应的角色。

即,先建立角色概念,然后建立权限概念,权限控制到每一个后端的管理者。

然后为角色分配权限,再给用户分配相应的角色。这样每个用户便具有了自身的权限。

进一步,所述步骤s1之前还包括:

当用户进行登录时,获取用户输入的账号和密码,并进行验证,当验证通过时,根据所述用户的角色分配相应的权限列表,并创建标识以及将所述标识返回至客户端。

本发明是使用jwt进行登录校验。jwt是一种用于双方之间传递安全信息的简洁的、url安全的表述性声明规范。jwt作为一个开放的标准(rfc7519),定义了一种简洁的,自包含的方法用于通信双方之间以json对象的形式安全的传递信息。因为数字签名的存在,这些信息是可信的,jwt可以使用hmac算法或者是rsa的公私秘钥对进行签名。具体可以通过url,post参数或者在httpheader发送,因为数据量小,传输速度也很快自包含(self-contained):负载中包含了所有用户所需要的信息,避免了多次查询数据库。

一旦用户完成了登陆,在接下来的每个请求中包含jwt,可以用来验证用户身份以及对路由,服务和资源的访问权限进行验证。由于开销非常小,可以轻松的在不同域名的系统中传递。

信息交换在通信的双方之间使用jwt对数据进行编码是一种非常安全的方式,由于它的信息是经过签名的,可以确保发送者发送的信息是没有经过伪造的。

用户进行登录时,会发送请求,然后获取其账号和密码,并进行验证,验证通过时,分配相应的权限列表,并创建token(标识),同时将创建的token(标识)返回给客户端。即使用jwt来进行登录校验。进一步,当验证不通过时,则返回报错信息至客户端。

另外,在创建标识后,保存所创建的标识,即服务器需保存所创建的标识。

在所述步骤s1中,当用户请求操作时,获取请求中所携带的标识,判断所述标识是否合法。

用户在请求操作时,其请求中会携带标识,也就是说,发送任何受保护的api请求,http请求,在authorizationheader中都携带有token。

在接收到请求后,检验请求中的标识是否合法。

在所述步骤s2中,当所述标识合法时,根据所述标识获取用户id,并在数据库中查询相应的用户id所具有的角色是否失效。

在标识中具有用户id信息,可从标识中获取用户id,然后在数据库中查询其具有的角色是否失效。

当然在此步骤中,当所述标识不合法时,则退出流程。

另外当所述角色失效时,则退出流程。即对于标识不合法或角色失效等情况,均退出流程,用户无法请求成功。

而当标识合法且角色未失效的情况,则进入步骤s3中。

在所述步骤s3中,若用户id所具有的角色未失效,则判断相应的角色是否具有相应操作的权限,如有则执行相应的操作,并返回操作结果至客户端。

即角色未失效,则需要判断相应的角色是否具有相应操作的权限,如果有相应操作的权限,则执行相应的操作,然后返回操作结果至客户端,如果没有相应操作的权限,则退出流程。也就是说,不仅标识不合法或角色失效等情况,均退出流程,对于不具有相应操作权限的情况,同样无法请求成功。

至于登录校验,本发明是采用jwt来实现。而对于登录之后的校验,即权限校验则是采用springsecurity来实现。

springsecurity是一个能够为基于spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在spring应用上下文中配置的bean,充分利用了springioc,di(控制反转inversionofcontrol,di:dependencyinjection依赖注入)和aop(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。

springsecurity可根据自己分配的角色在登录时将用户重定向到不同的url。

首先创建一个自定义的成功处理程序来负责根据登录用户的角色重定向到相应的url。springsecurity中已经提供了simpleurlauthenticationsuccesshandler,它包含了成功处理程序的逻辑。本发明只是用自己的重定向逻辑扩展它来实现本发明的目标。

当这个处理程序成功,将通过注册formlogin()或loginpage()。

springsecurity中最基本的是认证与授权认证,(authentication):确定一个用户的身份的过程。授权(authorization):判断一个用户是否有访问某个安全对象的权限。

在认证与授权中关键的三个过滤器:

1.usernamepasswordauthenticationfilter:该过滤器用于拦截表单提交的请求(默认为/login),进行用户的认证过程。

2.exceptiontranslationfilter:该过滤器主要用来捕获处理springsecurity抛出的异常,异常主要来源于filtersecurityinterceptor。

3.filtersecurityinterceptor:该过滤器主要用来进行授权判断。

在浏览器中访问应用时,会被引导至登录页面进行登录。

此路径因为不是表单提交的路径(/login),该过程主要起作用的过滤器为filtersecurityinterceptor。

真正进行权限判断的为beforeinvocation,该方法定义在filtersecurityinterceptor的父类abstractsecurityinterceptor中。

其中,a).beforeinvocation(objectobject)中的object为安全对象,类型为filterinvocation。安全对象就是受springsecurity保护的对象。虽然按道理来说安全对象应该是要访问的url,但是filterinvocation中封装了request,那么url也可以获取到。

b).collection<configattribute>attributes=this.obtainsecuritymetadatasource().getattributes(object)每个安全对象都会有对应的访问权限集(collection<configattribute>),而且在容器启动后所有安全对象的所有权限集就已经被获取到并被放在安全元数据中(securitymetadatasource中),通过安全元数据可以获取到各个安全对象的权限集。因为每个安全对象都是登录才可以访问的(anyrequest().authenticated()),这里只需要知道此时每个对象的权限集只有一个元素,并且是authenticated。如果一个对象没有权限集,说明它是一个公共对象,不受springsecurity保护。

c).当没有登录时,会被当做匿名用户(anonymouse)来看待。被当做匿名用户对待是anonymouseauthenticationfilter来拦截封装成一个authentication对象,当用户被认证后就会被封装成一个authentication对象。authentication对象中封装了用户基本信息,该对象会在认证中做详细介绍。anonymouseauthenticationfilter也是默认被注册的。

d).最中进行授权判断的是accessdecisionmanager的子类affirmativebased的decide方法。

因为首次登录,所以会抛出accessdeniedexception。此异常会被exceptiontranslationfilter捕获并进行处理的。

因为是以匿名用户的身份进行登录的,所以,会被引导去登录页面。登录页面的创建是由默认注册的过滤器defaultloginpagegeneratingfilter产生的。在被引导至登录页面后,将输入用户名和密码,提交至应用。应用会校验用户名和密码,校验成功后,成功访问应用。

此时访问的路径为/login,这是usernamepasswordauthenticationfilter将拦截请求进行认证。usernamepasswordauthenticationfilter的dofilter方法定义在其父类abstractauthenticationprocessingfilter中。

实际认证发生在usernamepasswordauthenticationfilter的attemptauthentication中,如果认证失败,则会调用unsuccessfulauthentication进行失败后的处理,一般是提示用户认证失败,要求重新输入用户名和密码,如果认证成功,那么会调用successfulauthentication进行成功后的处理,一般是将authentication存进securitycontext中并跳转至之前访问的页面或者默认页面。

springsecurity在进行认证时,会将用户名和密码封装成一个authentication对象,在进行认证后,会将authentication的权限等信息填充完全返回。authentication会被存在securitycontext中,供应用之后的授权等操作使用。authentication存储的就是访问应用的用户的一些信息。

本发明还提供一种电子设备10,如图2所示,其包括:

处理器110,适于实现各指令,以及

存储设备120,适于存储多条指令,所述指令适于由处理器110加载并执行:

当用户请求操作时,获取请求中所携带的标识,判断所述标识是否合法;

当所述标识合法时,根据所述标识获取用户id,并在数据库中查询相应的用户id所具有的角色是否失效;

若用户id所具有的角色未失效,则判断相应的角色是否具有相应操作的权限,如有则执行相应的操作,并返回操作结果至客户端。

所述处理器110可以为通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、单片机、arm(acornriscmachine)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。还有,处理器还可以是任何传统处理器、微处理器或状态机。处理器也可以被实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、一个或多个微处理器结合dsp核、任何其它这种配置。

存储设备120作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的基于教育系统的权限校验方法对应的程序指令。处理器通过运行存储在存储设备中的非易失性软件程序、指令以及单元,从而执行基于教育系统的权限校验方法的各种功能应用以及数据处理,即实现上述方法实施例。

关于上述电子设备10的具体技术细节在前面的方法中已有详述,故不再赘述。

本发明还提供一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行所述的基于教育系统的权限校验方法。

本发明还提供一种计算机程序产品,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被处理器执行时,使所述处理器执行所述的基于教育系统的权限校验方法。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1