一种基于网站路由访问权限控制方法、访问方法及系统与流程

文档序号:11234737阅读:800来源:国知局
一种基于网站路由访问权限控制方法、访问方法及系统与流程

本发明涉及通信技术领域,尤其涉及一种基于会话控制与数据库的网站路由访问权限控制的方法及系统。



背景技术:

随着互联网技术的高速发展,万维网(web)应用为我们生活中的各个方面带来越来越多的便利,我们生活的很多部分都离不开互联网,然而,伴随而来的是网站访问安全性问题。在现代信息系统中,安全管理一直是重要部分。而访问控制技术则是安全信息系统的重要环节,它的主要任务是保证资源不被非法使用和访问。在正常使用过程中,如果网站存在安全漏洞,强制访问即访问未授权的网页会造成数据泄密,网站会遭受攻击,因此,控制网站访问权限可以保证数据的私密性以及网站的安全性,保证网站权限可控成了一个关键性问题。

通常情况下,在服务器端中建立数据库,数据库中包含用户表、角色表、路由地址表和角色-路由地址表,在服务器接收到用户访问登录请求后,服务器发出查询指令对数据库中表格(用户表、角色表、路由地址表和角色-路由地址表)进行查询,通过角色与对应登录权限的关联,做出判断用户是否具有登录权限。但也存在了一些弊端,每次用户访问统一资源定位符(url)地址时对数据库访问查询,造成对数据库的频繁访问,反应速度变慢,增加服务器的压力。

如发明专利cn106789989a公开了一种用户权限验证方法及装置,其具体公开了根据检测到当前登录权限验证系统的操作用户的操作请求时,获取与操作用户的用户id关联的m个权限标识,操作请求用于从目标数据库中的数据进行操作;获取与操作请求对应的路由标识;判断m个权限标识中是否存在与路由标识相同的标识;如果m个权限标识中存在与路由标识相同的标识,进入处理操作请求的控制器,减少了用户权限判断的代码量,能够避免遗漏权限判断,从而提高了用户权限验证的准确性和执行效率。

但是,在该种用户权限验证方法及装置下服务器端在数据库中查询访问用户信息以及验证访问用户登录权限,会引起对数据库的频繁访问,造成服务器压力变大,如果在同一时间节点上有用户对web进行访问登录操作,当服务器多线程任务达到峰值或溢出后有可能造成服务器的宕机,从而造成数据流失,网站不能访问等问题。



技术实现要素:

本发明针对现有技术存在的问题,提出了一种网站路由访问权限控制方法及系统。

本发明采用会话控制(session)技术保存储存于数据库中的用户拥有权限的url路由信息(用户表、角色表、路由地址表和角色-路由地址表),在服务器收到用户登录请求后在session文件中验证,如果在session文件中查询到访问的该url地址,直接访问,且查询到该用户具有的所有url地址下次均可直接访问;session文件被设置有数据销毁周期,当用户首次登录访问后超过数据销毁周期未登录,则需再次登录。

本发明是通过以下技术方案得以实现的:

一种网站路由访问权限控制方法,包括如下步骤:

步骤s10,验证用户信息保存于会话控制文件。

步骤s20,首次访问统一资源定位符地址时,读取数据库中该用户信息对应的所有统一资源定位符地址,并保存于会话控制文件中;再次访问统一资源定位符地址时,读取会话控制文件。

作为本发明的优选,在所述步骤s20中包括标记步骤s21:

若所述用户信息存在于所述会话控制文件中,则获取当前时间并进行标记。

作为本发明的优选,在所述步骤s20中还包括判断步骤s22:

判断在步骤s21标记的当前时间标记之前是否已有过时间标记,若有,则再次进行判断;

获得已存在的最早时间标记到所述当前时间标记的相隔时间,若比系统预设数据销毁周期长,则销毁所述会话控制文件中从所述数据库中获得的用户信息。

一种网站路由访问方法:

步骤s01,服务器接收用户登录请求;

步骤s02,在会话控制文件中查询用户信息,若存在,则查询数据库读取数据库中该用户信息对应的所有统一资源定位符地址,并保存于会话控制文件中;

步骤s03,在会话控制文件中验证用户是否具有当前统一资源定位符地址的权限,若有权限,则成功访问,若没权限,则结束。

作为本发明的优选,述访问权限验证中步骤s02中还包括验证用户信息未保存于会话控制文件时,重定向至登陆界面。

作为本发明的优选,所述步骤s03还包括判断步骤:

判断之前是否有登录成功记录,若有,则查询所述会话控制文件中并登录,若没有则读取数据库中用户所拥有的统一资源定位符权限地址集保存到会话控制文件中并判断当前统一资源定位符地址是否在所述统一资源定位符权限地址集中。

一种网站路由访问系统,包括:

登录模块,用于接收用户登录请求。

验证模块,用于验证用户信息保存于会话控制文件。

判断模块,用于判断所述用户是否首次登录。

数据保存模块,用于从数据控中获取用户信息以及所有统一资源定位符地址信息并保存至所述会话控制文件。

权限控制模块,用于查询所述会话控制文件中用户信息并控制用户是否能够访问当前统一资源定位符地址。

作为本发明的优选,所述登录模块具体包括:

接受请求单元,用于服务器接收用户登录请求。

拦截器,用于拦截获得用户名以及所述当前统一资源定位符地址。

作为本发明的优选,所述权限控制模块中还包括标记单元,用于获取当前时间并标记。

作为本发明的优选,所述判断模块中还包括判断子单元,用于判断在所述标记单元标记的当前时间标记之前是否已有过时间标记,若已存在过时间标记,则算出已存在的最早时间标记到所述当前时间标记的相隔时间。

作为本发明的优选,所述判断模块中还包括数据销毁单元,用于触发销毁所述时间间隔超出所述预设数据销毁时间周期的用户所对应的所述所有统一资源定位符地址数据和触发销毁用户信息。

有益效果:

1、将数据库保存用户信息与权限信息保存于session文件中,在session文件中进行权限验证,避免了用户登录访问服务器数据库权限验证时频繁的对数据库进行查询,避免了数据库压力,也使得权限验证更加高效。

2、由于session文件储存在服务器中,占用服务器内存,设定session数据销毁时间周期,对超过数据销毁时间周期的数据进行销毁,防止session文件中数据溢出,过多占用服务器内存,造成运行速度变慢,查询出错,甚至服务器宕机。

附图说明

图1为本发明一种网站路由访问权限控制方法的流程图;

图2为本发明一种网站路由访问方法的流程图;

图3为本发明一种网站路由访问系统的流程图。

具体实施方式

以下是本发明的具体实施例并结合附图,对本发明的技术方案作进一步的描述,但本发明并不限于这些实施例。

在当前常规情况下,web访问控制技术通常以访问服务器数据库查询用户对应的网站访问权限并放行来实现,在服务器端中建立数据库,数据库中包含用户表、角色表、路由地址表和角色-路由地址表,在服务器接收到用户访问登录请求后,服务器发出查询指令对数据库中表格(用户表、角色表、路由地址表和角色-路由地址表)进行查询,通过角色与对应登录权限的关联,做出判断用户是否具有登录权限,并作出放行指令使用户能访问具有权限的网站。但也存在了一些弊端,每次用户访问统一资源定位符(url)地址时对数据库访问查询,造成对数据库的频繁访问,反应速度变慢,增加服务器的压力。

在本发明中,将数据库保存用户信息与权限信息保存于session文件中,在session文件中进行权限验证,避免了用户登录访问服务器数据库权限验证时频繁的对数据库进行查询,避免了数据库压力,也使得权限验证更加高效;session文件储存在服务器中,占用服务器内存,设定session数据销毁时间周期,对超过数据销毁时间周期的数据进行销毁,防止session文件中数据溢出,过多占用服务器内存,造成运行速度变慢,查询出错,甚至服务器宕机。

以下为本发明具体实施例。

实施例1

如图1,本发明一种网站路由访问权限控制方法,包括以下步骤:

步骤s10,验证用户信息保存于会话控制文件。

服务器接收用户登录请求获取用户名以及所述当前url地址,例如,用户张三在客户端输入url地址:http://127.0.0.1:8080/test,并在登录界面输入用户名“张三”和密码“abc123”,获取到url地址为http://127.0.0.1:8080/test,用户名为“张三”,密码为“abc123”。并在session文件中进行匹配,验证用户信息是否在session文件中,若在session文件中有用户名为“张三”,密码为“abc123”的信息,则进行下一步,若没有,则网站重定向到登录界面。

步骤s20,首次访问统一资源定位符地址时,读取数据库中该用户信息对应的所有统一资源定位符地址,并保存于会话控制文件中;再次访问统一资源定位符地址时,读取会话控制文件。

若张三第一次对http://127.0.0.1:8080/test访问,系统则向数据库查询,并保存用户对应信息到session文件中。

session文件从数据库中获得用户名对应的所有url路由数据和用户名对应的所有角色数据,并进行保存。

在web服务器端数据库保存有用户登录访问权限数据,主要由四个数据表构成,包括用户表、角色表、权限表、用户角色表和角色权限表:

用户表,包括用户编码、用户名、密码等,用于储存用户信息。

角色表,包括角色编码、角色名、角色描述等,用于储存角色信息。

权限表,包括权限编码、权限名和url地址,用于储存具体的权限信息。

用户角色表,包括用户编码和角色编码,实现用户和角色的多对多映射。

角色权限表,包括角色编码和权限编码,实现角色和权限的多对多映射。

角色表通过所述用户角色表与所述用户表进行多对多的关联。

角色表通过所述角色权限表与所述权限表进行多对多的关联。

用户是对数据对象进行操作的主体,可以是人、机器人和计算机等。权限是对某一数据对象可操作的权利。角色则是用户和权限的中间桥梁,通过引进角色的概念实现了用户和权限的逻辑分离,支撑了技术人员与业务人员职责的分离。传统情况下,对数据库进行查询,用户通过获得角色得到权限来对客体进行操作,从而实现权限管理与控制。

本发明中加入session技术,通过访问查询数据库,查询获得用户对应的角色信息和url路由信息,储存至session文件中,保存于服务器中。虽然数据库和session文件同样保存于服务器中,但同体量的用户访问查询session文件对服务器产生的压力小于同体量的用户访问查询数据库服务器产生的压力,将数据存至session文件后该用户访问url都在session文件中查询,减少了对数据库的访问查询,减轻了服务器的负担,增加了服务器的稳定性。

进一步,所述步骤s20中包括标记步骤s21:

若所述用户信息存在于所述会话控制文件中,则获取当前时间并进行标记。

例如用户名“张三”和密码“abc123”被验证存在于session文件中且http://127.0.0.1:8080/test为用户张三对应session文件中所存的授权url地址集中,系统获取张三首次访问时间为2017年6月1日10:00并标记此次用户张三的登录时间。

进一步,在所述步骤s20中还包括判断步骤s22:

判断在步骤s21标记的当前时间标记之前是否已有过时间标记,若有,则再次进行判断;

得到已存在的最早时间标记到所述当前时间标记的相隔时间,若比系统预设数据销毁周期长,则销毁所述会话控制文件中从所述数据库中获得的用户信息。

例如系统预设数据销毁时间周期为168小时,系统获取张三当前时间为2017年6月9日10:00,已有访问时间为2017年6月1日10:00和2017年6月6日16:00,那么在已有记录中最早登录记录为2017年6月1日10:00,经计算获得时间间隔为192小时,超出预设数据销毁时间周期168小时,则系统此时将张三所对应的数据销毁,系统需再次访问查询数据库,再次保存张三所对应的数据至session文件中,且再一次标注张三新的首次登录时间,新的首次登录时间为2017年6月9日10:00并且此时系统内只有这一条登录记录。

如图2,本发明一种网站路由访问方法:

步骤s01,服务器接收用户登录请求。

步骤s02,在会话控制文件中查询用户信息,若存在,则查询数据库读取数据库中该用户信息对应的所有统一资源定位符地址,并保存于会话控制文件中。

进一步,访问权限验证中步骤s02中还包括验证用户信息未保存于会话控制文件时,重定向至登陆界面。

步骤s03,在会话控制文件中验证用户是否具有当前统一资源定位符地址的权限,若有权限,则成功访问,若没权限,则结束。

在所述session文件中查询用户信息,角色表通过所述角色权限表与所述权限表进行多对多的关联,获得该用户所具有权限的所有url地址,并对该用户访问的当前url地址进行判断,若该用户所具有权限的所有url地址变量中具有当前url地址变量,则该用户可以直接对当前url地址进行访问;若该用户所具有权限的所有url地址变量中不具有当前url地址变量,则该用户不可以直接对当前url地址进行访问。例如,用户张三在客户端输入url地址:http://127.0.0.1:8080/test,并在登录界面输入用户名“张三”和密码“abc123”,服务器端接收到张三的访问需求,“张三”、“abc123”可在服务器中的session文件中查询到且查到http://127.0.0.1:8080/test为用户张三已授权地址,张三便可成功访问http://127.0.0.1:8080/test网页,否则不能访问。

进一步,判断之前是否有登录成功记录,若有,则查询所述会话控制文件中并登录,若没有则读取数据库中用户所拥有的统一资源定位符权限地址集保存到会话文件中并判断当前统一资源定位符地址是否在所述统一资源定位符权限地址集中。

实施例2

如图3,本发明一种基于session与数据库的网站路由访问系统,包括:

登录模块,用于接收用户登录请求。

所述登录模块具体包括:

接受请求单元,用于服务器接收用户登录请求。

用户在客户端上进行操作,输入url地址,请求对该url地址进行访问,用户张三在客户端输入url地址:http://127.0.0.1:8080/test,欲对url地址进行访问,并在网页登录提示页面上输入用户名以及密码等信息。

拦截器,用于拦截获得用户名以及所述当前url地址。

服务器接收用户登录请求并同时通过拦截器拦截,所述拦截器获取用户名以及所述当前url地址,例如,用户张三在客户端输入url地址:http://127.0.0.1:8080/test,并在登录界面输入用户名“张三”和密码“abc123”,服务器端接收到张三的访问需求同时此进程被拦截器拦截,所述拦截器获取到url地址为http://127.0.0.1:8080/test,用户名为“张三”,密码为“abc123”。

服务器端接收到张三的访问需求同时此进程被拦截器拦截,所述拦截器获取到url地址为http://127.0.0.1:8080/test,用户名为“张三”,密码为“abc123”。

验证单元,用于验证用户信息保存于会话控制文件。

进一步,判断访问用户信息是否存在session文件中,若不存在,则重定向到登录界面。通过拦截器获得的用户信息放入session文件中进行查询,匹配所获用户信息是否存在于session文件中,例如“张三”和/或“abc1234”是否存在于session文件数据中,如果存在,则进行下一步操作;如果不存在,则重定向至登录界面。如果是输错用户信息如“张三”输成“张四”、“abc1234”输成“abc1235”则再次输入验证;如果输入正确,则该用户无权登录。

判断模块,用于判断所述用户是否首次登录。

数据保存模块,用于从数据控中获取所对应的所有角色以及所有url地址信息并保存至所述session文件。

成功在session文件中验证具有该用户信息后,对数据库进行查询,通过数据库中用户表、角色表、权限表、用户角色表和角色权限表等表格进行匹配,查询用户和角色的多对多映射关系、角色和权限的多对多映射关系,分析出该用户具有的所有角色信息以及所有有权限访问的url地址,并将这些数据储存至session文件中。

进一步,所述判断模块中还包括标记单元,用于获取当前时间并标记。

进一步,所述判断模块中还包括判断子单元,用于判断在所述标记单元标记的当前时间标记之前是否已有过时间标记,若已存在过时间标记,则算出已存在的最早时间标记到所述当前时间标记的相隔时间。

进一步,所述判断模块中还包括数据销毁单元,用于触发销毁所述时间间隔超出所述预设数据销毁时间周期的用户所对应的所述所有统一资源定位符地址数据和触发销毁用户名对应的所有角色数据。

进一步,将数据库中用户对应的各种信息储存至session文件中,在后期的访问查询过程中,相比较直接对数据库查询访问,在session文件中查询对服务器造成更小的压力,增加服务器稳定性,确保服务器系统数据的安全有效性。

权限控制模块,用于查询所述session文件中用户信息控制用户是否能够访问当前url地址。

在所述session文件中查询用户信息,角色表通过所述角色权限表与所述权限表进行多对多的关联,获得该用户所具有权限的所有url地址,并对该用户访问的当前url地址进行判断,若该用户所具有权限的所有url地址变量中具有当前url地址变量,则该用户可以直接对当前url地址进行访问;若该用户所具有权限的所有url地址变量中不具有当前url地址变量,则该用户不可以直接对当前url地址进行访问。如用户张三的用户角色下具有对http://127.0.0.1:8080/test、http://127.0.0.1:8081/test、http://127.0.0.1:8083/test的访问权限,如果张三当前需要访问的url地址为http://127.0.0.1:8080/test,则张三可以顺利访问;如果张三当前需要访问的url地址为http://127.0.0.1:8088/test,该url地址不存在于张三有权限url地址中,则张三无法访问,若张三需要访问http://127.0.0.1:8088/test,必须通过超级管理员权限,将http://127.0.0.1:8088/test的访问权限分配给用户张三。

本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

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