一种给静态页面添加访问控制的方法及系统与流程

文档序号:22796665发布日期:2020-11-04 03:49阅读:411来源:国知局
一种给静态页面添加访问控制的方法及系统与流程

本发明属于数字教育技术领域,具体涉及一种给静态页面添加访问控制的方法及系统。



背景技术:

很多资源都是以html静态页面的形式存在的,这就面临着匿名用户是否可以访问的问题,关于如何使得在不修改原有资源页面的前提下达到添加访问控制的目的,目前通用解决方案主要有以下两种:

1.java服务器页面(jsp,javaserverpages)技术,即通过向静态页面中添加权限判断的js代码来在客户端请求服务器接口实现验证和跳转,此方案适用于课件资源比较少的情况。

上述方法的缺点主要有以下两点:需要将每个资源页面都添加上权限验证代码特别是一些自动生成的静态页面,其工作量巨大;客户端做权限限制安全性低。

2.通过url路径匹配来排除静态资源的拦截,此种方式需要把静态资源一同部署在web服务器上并且局限在一个或有限的几个目录来方便url匹配,适用于同一资源被所有用户访问都显示相同效果的场景。

上述方法的缺点主要有以下两点:静态页面需要单独依赖一个web服务;同一资源不能根据不同用户展示不同的效果。

基于现有技术中存在的缺陷,有必要发明了一种给静态页面添加访问控制的方法及系统以解决上述问题。



技术实现要素:

针对现有技术中存在的缺陷,本发明的目的是提供一种给静态页面添加访问控制的方法及系统将权限验证设定在服务器端并且不需要修改静态页面文件就能访问。

为达到以上目的,本发明采用的技术方案是:一种给静态页面添加访问控制的方法,包括:

(1)将静态页面资源放到web服务器能访问的存储设备中,每个资源文件夹统一用唯一的uuid来命名并且首页文件名统一命名为index.html;

(2)web服务新增所述资源的访问接口,接口参数包括用户唯一标识和资源唯一标识;

(3)进行服务端权限配置;

(4)客户端向服务端发出资源请求,资源请求包括所述接口参数和资源文件uuid;

(5)服务端读取cookie,判断是否有访问权限,如果有访问权限,则获取资源信息,读取文件流。

进一步的,所述静态页面资源包括:index.html文件、javascript文件、css样式文件、video文件、audio文件和image文件中的至少一种。

进一步的,所述步骤(3)中具体包括:

当原有权限控制体系能满足需求时,利用原有的权限控制体系配置用户对资源的访问权限;

当原有权限体系不支持或者需求上资源权限控制可以独立于原有的权限体系时,在新增接口中添加权限判断。

进一步的,步骤(5)中所述服务端读取cookie,判断是否有访问权限具体包括:

服务端读取cookie,将所述用户名与所述访问权限进行匹配,如能匹配则有访问权限。

进一步的,步骤(5)中所述如果有访问权限,则获取资源信息,读取文件流具体包括:

如果有访问权限,则判断所述cookie中是否存在资源唯一标识;

如不存在资源标识,则根据传入的资源唯一标识到数据库中查找资源所在目录名,根据结果到所述存储设备中读取约定的资源首页文件流并将资源标识和目录名称写入cookie中;

如存在资源标识,则在所述cookie中取出请求资源的目录名并在request对象中获取请求的子资源文件的相对路径,根据路径到所述存储设备中读取文件流并返回。

进一步的,步骤(5)中在判断是否有访问权限前,所述方法还包括:

服务端读取cookie,判断是否为第一次请求资源;

如果为第一次请求资源,则查询访问权限,设置cookie并且返回index.html文件流;

如果不是第一次请求资源,则根据上次请求记录,直接获取资源信息。

为达到以上目的,本发明采用的技术方案是:一种给静态页面添加访问控制的系统,所述系统包括客户端、服务端以及web服务器能访问的存储设备,所述系统还包括原有权限控制体系,所述权限控制体系用于配置用户对资源的访问权限;

所述存储设备存储有静态页面资源,每个资源文件夹统一用唯一的uuid来命名并且首页文件名统一命名为index.html,web服务为所述资源设有访问接口,接口包括用户标识和资源标识;

客户端用于向服务端发出资源请求,资源请求包括所述接口参数和资源文件uuid;

服务端进行权限配置,且还用于读取cookie,判断是否有访问权限,如果有访问权限,则获取资源信息,读取文件流。

进一步的,所述服务端进行权限配置具体包括:

当系统通过配置原有权限控制体系能满足需求时,利用原有的权限控制体系配置用户对资源的访问权限,将所述用户名与所述访问权限进行匹配;

当原有系统权限体系不支持或者需求上资源权限控制可以独立于原有的权限体系,在新增接口中添加权限判断。

进一步的,所述服务端用于读取cookie,判断是否有访问权限具体包括:

服务端读取cookie,将所述用户名与所述访问权限进行匹配,如能匹配则有访问权限。

进一步的,当有访问权限时,所述服务端还用于判断所述cookie中是否存在资源唯一标识;

如不存在资源唯一标识,则根据传入的资源唯一标识到数据库中查找资源所在目录名,根据结果到所述存储设备中读取约定的资源首页文件流并将资源唯一标识和目录名称写入cookie中;

如存在资源唯一标识,则在所述cookie中取出请求资源的目录名并在request对象中获取请求的子资源文件的相对路径,根据路径到所述存储设备中读取文件流并返回给客户端。

进一步的,所述服务端在读取cookie时,还用于判断是否为第一次请求资源;

如果为第一次请求资源,查询访问权限,设置cookie并返回index.html文件流;

如果不是第一次请求资源,则根据上次请求记录,直接获取资源信息。

本发明的效果在于,本发明提供的一种给静态页面添加访问控制的方法及系统,利用浏览器客户端的页面请求机制将子资源请求进行拦截后将本地资源文件流响应给浏览器来达到在不修改原有资源页面的前提下达到添加访问控制的目的。

附图说明

图1为本发明所述方法的流程示意图;

图2本发明所述系统的结构示意图。

具体实施方式

为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面将结合附图对本发明实施例的技术方案作进一步的详细描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,均属于本发明保护的范围。

参阅图1,图1为本发明所述方法的流程示意图。本发明所提供的方法包括以下步骤:

步骤101:将静态页面资源放到web服务器能访问的存储设备中,每个资源文件夹统一用唯一的uuid来命名并且首页文件名统一命名为index.html。

在一个具体的实施例中,存储设备可以为阿里云oss。可以约定将所有资源统一存放到阿里云oss的resources目录下,每个资源文件夹统一用唯一的uuid来命名并且首页文件名统一命名为index.html。

本方法还包括,在数据库中及时更新资源所在的目录名。

所述静态页面资源包括:index.html文件、javascript文件、css样式文件、video文件、audio文件和image文件中的至少一种。将需要被外界访问的静态页面资源放到阿里云oss的resources目录下。

resources目录的结构如下:

步骤102:web服务新增所述资源的访问接口,接口包括用户唯一标识和资源唯一标识。

在已有项目中新增资源访问接口,接口输入参数中必须有资源id(resourceid)。配置仅当用户有资源访问权限时才能路由到此接口否则直接返回无权访问资源。

步骤103:进行服务端权限配置。

服务器进行权限权限判断包括以下两种情况:

一、不在新增接口中添加权限判断

具体实施例包括:1.如果系统通过配置原有权限控制体系能满足需求就不需要再在此处判断权限了。利用原有的权限控制体系配置用户对资源的访问权限,将所述用户名与所述访问权限进行匹配;2.修改原有权限控制体系代码来支持新增接口权限控制,新增接口本身不需要判断权限;3.允许所有用户访问所有资源。

二、在新增接口中添加权限判断

在本实施例中,之前系统权限体系不支持或者需求上资源权限控制可以独立于之前的权限体系,需要在新增接口中添加权限判断。具体的,在新增接口中添加单独的资源权限控制代码。

步骤104:客户端向服务端发出资源请求,资源请求包括所述接口参数和资源文件uuid。即包括:用户唯一标识userid和资源唯一标识resourceid。

步骤105:服务端读取cookie,判断是否有访问权限,如果有访问权限,则获取资源信息,读取文件流。

所述服务端读取cookie,判断是否有访问权限具体包括:服务端读取cookie,将所述用户名与所述访问权限进行匹配,如能匹配则有访问权限。

优选的,服务端读取cookie时,还需要判断是否为第一次请求资源;如果为第一次请求资源,可能还要在新增接口中直接调用访问权限判断,通过后设置cookie,并返回index.html文件流;如果不是第一次请求资源,则根据上次请求记录,直接获取资源信息。

如果有访问权限,则判断所述cookie中是否存在资源唯一标识;

如不存在资源唯一标识,则根据传入的资源唯一标识到数据库中查找资源所在目录名,根据结果到所述存储设备中读取约定的资源首页文件流并将资源唯一标识和目录名称写入cookie中;

如存在资源唯一标识,则在所述cookie中取出请求资源的目录名并在request对象中获取请求的子资源文件的相对路径,根据路径到所述存储设备中读取文件流并返回。

本发明所述方法还包括:客户端接收服务端发送的文件流,进行dom文件解析,最终完成资源展示。

参阅图2,图2为本发明所述系统的结构示意图。一种给静态页面添加访问控制的系统包括客户端、服务端以及web服务器能访问的存储设备。所述系统还包括原有权限控制体系,所述权限控制体系用于配置用户对资源的访问权限。

所述存储设备存储有静态页面资源,每个资源文件夹统一用唯一的uuid来命名并且首页文件名统一命名为index.html,web服务为所述资源设有访问接口,接口包括用户唯一标识和资源唯一标识。

客户端用于向服务端发出资源请求,资源请求包括所述接口参数和资源文件uuid。

服务端需要进行权限配置,且还用于读取cookie,判断是否有访问权限,如果有访问权限,则获取资源信息,读取文件流。

所述服务端进行权限配置具体包括:

当系统通过配置原有权限控制体系能满足需求时,利用原有的权限控制体系配置用户对资源的访问权限,将所述用户名与所述访问权限进行匹配。具体实施例包括:1.如果系统通过配置原有权限控制体系能满足需求就不需要再在此处判断权限了。利用原有的权限控制体系配置用户对资源的访问权限,将所述用户名与所述访问权限进行匹配;2.修改原有权限控制体系代码来支持新增接口权限控制,新增接口本身不需要判断权限;3.允许所有用户访问所有资源。

当原有系统权限体系不支持或者需求上资源权限控制可以独立于原有的权限体系,在新增接口中添加权限判断。具体操作方法为:在新增接口中添加单独的资源权限控制代码。

所述服务端用于读取cookie,判断是否有访问权限具体包括:

服务端读取cookie,将所述用户名与所述访问权限进行匹配,如能匹配则有访问权限。

当有访问权限时,所述服务端还用于判断所述cookie中是否存在资源唯一标识。具体包括:

如不存在资源唯一标识,则根据传入的资源文件uuid到数据库中查找资源所在目录名,根据结果到所述存储设备中读取约定的资源首页文件流并将资源标识和目录名称写入cookie中;

如存在资源唯一标识,则在所述cookie中取出请求资源的目录名并在request对象中获取请求的子资源文件的相对路径,根据路径到所述存储设备中读取文件流并返回给客户端。

具体为:如果resourceid不存在或值为空,则通过接口参数传入的resourceid(uuid)到数据库中查询资源所在设备路径(resources/),此时可知当前请求资源的resourcefolder=resources/uuid,将“resourceid=uuid”和“resourcefolder=resources/uuid”写入cookie中,由约定可知首页文件路径为resources/uuid/index.html,读取首页文件流并写入responsestream中。

如果resourceid=uuid并且resourcefolder=resources/uuid此时说明当前请求的是资源uuid的子资源,通过request对象获取请求的子资源相对路径css/a.css,调用osssdk读取文件resources/uuid/css/a.css并将流写入responsestream中。

所述系统还包括权限控制体系,所述权限控制体系用于配置用户对资源的访问权限。

所述服务端在读取cookie时,还用于判断是否为第一次请求资源;如果为第一次请求资源,则查询访问权限,设置cookie并返回index.html文件流;如果不是第一次请求资源,则根据上次请求记录,直接获取资源信息。

本领域技术人员应该明白,本发明方法及系统不限于具体实施方式中所述的实施例,上面的具体描述只是为了解释本发明的目的,并非用于限制本发明。本领域技术人员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范围,本发明的保护范围由权利要求及其等同物限定。

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