一种资源访问方法、装置及***
技术领域
本申请涉及通信技术领域,尤其涉及一种资源访问方法、装置及***。
背景技术
随着通信技术的发展,为了满足日益增长和多种多样的业务需求,基于移动终端的互联网应用越来越多。
目前,基于互联网应用的资源访问通常需要将目标资源的绝对路径携带于资源访问请求中以实现资源的访问。互联网应用的资源存储结构通常较为复杂,目录层级较多,资源的绝对路径通常较长,因此不利于资源的访问,比如,容易因路径错误导致资源访问失败,另一方面如果资源存储结构改变,则容易因绝对路径的错误而影响资源的访问。
因此,亟需一种资源访问方案,以克服上述缺陷。
申请内容
本申请实施例提供了一种资源访问方法、装置及***。
本申请实施例提供的资源访问方法,包括:
接收资源访问请求,所述资源访问请求中携带有所请求访问的目标资源的标识;
解析所述目标资源的标识,至少得到所述目标资源的类型和相对路径;
根据解析得到的信息,生成所述目标资源的绝对路径;
根据所述目标资源的绝对路径对所述目标资源进行访问。
优选地,所述目标资源的标识中包含目标资源类型的指示信息,其中,资源的类型包括:
第一类型,用于表示资源存储于外部存储器;
第二类型,用于表示资源未存储于外部存储器,且资源为应用程序本身资源;
第三类型,用于表示资源未存储于外部存储器,且资源为应用程序运行时资源。
其中,所述目标资源的标识中包括:资源类型域,所述资源类型域包括第一字段和第二字段;
若所述第一字段的取值表明所述目标资源的类型为第一类型,则所述第二字段为空;否则,所述第二字段的取值表明所述目标资源的类型为第二类型或第三类型。
相应地,所述至少根据所述目标资源的类型以及相对路径,生成所述目标资源的绝对路径,包括:
若所述目标资源类型的指示信息指示所述目标资源的类型为第一类型,则根据外部存储器中的资源存储结构以及所述目标资源的相对路径,生成所述目标资源在所述外部存储器中的绝对路径;
若所述目标资源类型的指示信息指示所述目标资源的类型为第二类型或第三类型,则根据本地资源存储结构以及所述目标资源的相对路径,生成所述目标资源在本地的绝对路径。
其中,所述目标资源的标识中还包含所述目标资源所属域的指示信息;
所述根据外部存储器中的资源存储结构以及所述目标资源的相对路径,生成所述目标资源在所述外部存储器中的绝对路径,包括:
根据外部存储器中的资源存储结构确定所述目标资源所属域所在的目录,根据该目录以及所述目标资源的相对路径,生成所述目标资源在所述外部存储器中的绝对路径。
优选地,所述目标资源的标识中还包含所述目标资源所属域的指示信息;
所述根据本地资源存储结构以及所述目标资源的相对路径,生成所述目标资源在本地的绝对路径,包括:
若所述目标资源类型的指示信息指示所述目标资源的类型为第二类型,则根据本地的应用程序本身资源的存储结构确定所述目标资源所属域所在的目录,根据该目录以及所述目标资源的相对路径,生成所述目标资源在本地的绝对路径;
若所述目标资源类型的指示信息指示所述目标资源的类型为第三类型,则根据本地的应用程序运行时资源的存储结构确定所述目标资源所属域所在的目录,根据该目录以及所述目标资源的相对路径,生成所述目标资源在本地的绝对路径。
进一步地,解析所述目标资源的标识之前,还包括:对所述目标资源的标识的格式进行合法性验证。
优选地,所述目标资源的标识中包含所述目标资源所属域的指示信息,所述解析得到的相对路径为所述目标资源在所属域中的路径;和/或,所述目标资源的标识中包含所述资源访问请求的发起方用户信息。
其中,根据所述目标资源的绝对路径对所述目标资源进行访问之前,还包括:
根据所述资源访问请求的发起方用户信息、目标资源所属域的指示信息中的一种或多种组合,以及预设的访问权限判决规则,对所述资源访问请求进行访问权限判决。
其中,所述根据所述资源访问请求的发起方用户信息、目标资源所属域的指示信息以及预设的访问权限判决规则,对所述资源访问请求进行访问权限判决,包括:
根据所述资源访问请求的发起方用户信息获取对应的预先设置的资源列表,根据所述发起方用户信息以及获取到的资源列表对所述资源访问请求进行访问权限判决,其中,所述资源列表中的资源有权或无权被所述发起方用户访问;或者,
根据所述资源访问请求中携带的目标资源标识或目标资源所属域获取对应的预先设置的用户列表,根据所述目标资源标识或目标资源所属域,以及获取到的用户列表对所述资源访问请求进行访问权限判决,其中,所述用户列表中的用户有权或无权访问所述目标资源。
优选地,所述根据所述目标资源的绝对路径对所述目标资源进行访问,包括:使用预先配置的资源访问秘钥对目标资源进行解密处理,得到解密后的目标资源。
优选地,若根据所述目标资源的绝对路径对所述目标资源进行访问时访问失败,则还包括以下步骤:发起资源同步过程。
优选地,所述资源标识为统一资源标识符URI。
优选地,所述URI中包括以下信息域:
资源类型域,用于承载资源类型指示信息;
域名域,用于承载资源所属域的指示信息;
路径域,用于承载资源在其所属域中的路径。
其中,所述资源类型域包括第一字段和第二字段;若所述第一字段的取值表明所述目标资源的类型为第一类型,则所述第二字段为空;否则,所述第二字段的取值表明所述目标资源的类型为第二类型或第三类型。
进一步地,所述URI中还包括以下信息域中的一种或组合:
用户信息域,用于承载发起资源访问请求的用户的信息;
参数域,用于承载参数。
本申请实施例提供的资源访问***,包括:
解析模块,用于接收资源访问请求,解析所述资源访问请求中携带的目标资源的标识,至少得到所述目标资源的类型和相对路径;
生成模块,用于根据解析得到的信息,生成所述目标资源的绝对路径;
访问管理模块,用于根据所述目标资源的绝对路径对所述目标资源进行访问。
优选地,所述目标资源的标识中包含目标资源类型的指示信息,其中,资源的类型包括:
第一类型,用于表示资源存储于外部存储器;
第二类型,用于表示资源未存储于外部存储器,且资源为应用程序本身资源;
第三类型,用于表示资源未存储于外部存储器,且资源为应用程序运行时资源。
其中,所述目标资源的标识中包括:资源类型指示信息域,所述资源类型指示信息域包括第一字段和第二字段;
若所述第一字段的取值表明所述目标资源的类型为第一类型,则所述第二字段为空;否则,所述第二字段的取值表明所述目标资源的类型为第二类型或第三类型。
相应地,所述生成模块具体用于:
若所述目标资源类型的指示信息指示所述目标资源的类型为第一类型,则根据外部存储器中的资源存储结构以及所述目标资源的相对路径,生成所述目标资源在所述外部存储器中的绝对路径;
若所述目标资源类型的指示信息指示所述目标资源的类型为第二类型或第三类型,则根据本地资源存储结构以及所述目标资源的相对路径,生成所述目标资源在本地的绝对路径。
其中,所述目标资源的标识中还包含所述目标资源所属域的指示信息;
所述生成模块具体用于:
根据外部存储器中的资源存储结构确定所述目标资源所属域所在的目录,根据该目录以及所述目标资源的相对路径,生成所述目标资源在所述外部存储器中的绝对路径。
优选地,所述目标资源的标识中还包含所述目标资源所属域的指示信息;
所述生成模块具体用于:
若所述目标资源类型的指示信息指示所述目标资源的类型为第二类型,则根据本地的应用程序本身资源的存储结构确定所述目标资源所属域所在的目录,根据该目录以及所述目标资源的相对路径,生成所述目标资源在本地的绝对路径;
若所述目标资源类型的指示信息指示所述目标资源的类型为第三类型,则根据本地的应用程序运行时资源的存储结构确定所述目标资源所属域所在的目录,根据该目录以及所述目标资源的相对路径,生成所述目标资源在本地的绝对路径。
优选地,所述解析模块还用于:解析所述目标资源的标识之前,对所述目标资源的标识的格式进行合法性验证。
优选地,所述目标资源的标识中包含所述目标资源所属域的指示信息,所述解析得到的相对路径为所述目标资源在所属域中的路径;和/或,所述目标资源的标识中包含所述资源访问请求的发起方用户信息。
相应地,所述访问管理模块还用于:根据所述目标资源的绝对路径对所述目标资源进行访问之前,根据所述资源访问请求的发起方用户信息、目标资源所属域的指示信息中的一种或多种组合,以及预设的访问权限判决规则,对所述资源访问请求进行访问权限判决。
其中,所述访问管理模块具体用于:
根据所述资源访问请求的发起方用户信息获取对应的预先设置的资源列表,根据所述发起方用户信息以及获取到的资源列表对所述资源访问请求进行访问权限判决,其中,所述资源列表中的资源有权或无权被所述发起方用户访问;或者,
根据所述资源访问请求中携带的目标资源标识或目标资源所属域获取对应的预先设置的用户列表,根据所述目标资源标识或目标资源所属域,以及获取到的用户列表对所述资源访问请求进行访问权限判决,其中,所述用户列表中的用户有权或无权访问所述目标资源。
优选地,所述访问管理模块具体用于:使用预先配置的资源访问秘钥对目标资源进行解密处理,得到解密后的目标资源。
优选地,所述访问管理模块还用于:若根据所述目标资源的绝对路径对所述目标资源进行访问时访问失败,则发起资源同步过程。
优选地,所述资源标识为统一资源标识符URI。
优选地,所述URI中包括以下信息域:
资源类型域,用于承载资源类型指示信息;
域名域,用于承载资源所属域的指示信息;
路径域,用于承载资源在其所属域中的路径。
其中,所述资源类型域包括第一字段和第二字段;若所述第一字段的取值表明所述目标资源的类型为第一类型,则所述第二字段为空;否则,所述第二字段的取值表明所述目标资源的类型为第二类型或第三类型。
进一步地,所述URI中还包括以下信息域中的一种或组合:
用户信息域,用于承载发起资源访问请求的用户的信息;
参数域,用于承载参数。
本申请实施例提供的终端,包括:
存储器,用于存储计算机程序指令;
处理器,耦合到所述存储器,用于读取所述存储器存储的计算机程序指令,并作为响应,执行如下操作:
接收资源访问请求,所述资源访问请求中携带有所请求访问的目标资源的标识;
解析所述目标资源的标识,至少得到所述目标资源的类型和相对路径;
根据解析得到的信息,生成所述目标资源的绝对路径;
根据所述目标资源的绝对路径对所述目标资源进行访问。
本申请的上述实施例中,资源访问请求中的目标资源标识中包含相对路径而非绝对路径,通过解析该目标资源标识可得到该相对路径以及目标资源的类型,根据解析得到的信息生成该目标资源的绝对路径,从而根据该绝对路径访问目标资源。由于目标资源标识中无需携带绝对路径,因而克服了现有技术中需要在资源访问请求中携带目标资源的绝对路径所导致的问题。
附图说明
图1为本申请实施例提供的资源访问***的结构示意图;
图2为本申请实施例提供的资源访问流程示意图;
图3为本申请实施例提供的终端的结构示意图。
具体实施方式
下面首先对本申请实施例中涉及到的一些技术术语进行简要说明。
(1)资源
在操作***,比如YunOS***中,资源是指应用(英文为Application)的数据和资源,数据包括静态数据和运行时数据,资源可以是本地服务(比如本地***服务或自定义服务),也可以是远程服务(比如云端的服务)。
对于应用程序来说,资源包括应用程序本身的资源以及应用程序运行时的资源,其中,应用程序本身的资源可以是指应用程序自身的代码,比如应用程序解压缩后的数据;应用程序运行时的资源是指应用程序运行时生成的资源,比如可以是数据处理结果。
在云操作***,比如YunOS中,资源表现为Page。
Page称为服务组件,是对本地服务和远程服务的抽象,也即服务的基本单元,通过对数据和方法的封装,可以提供各种服务。一个服务场景可以包括多个Page。举例来说,一个Page可以是UI(用户界面)、拍照等服务,也可以是后台服务,如账户认证。运行态Page称为Page实例,是本地服务或远程服务的运行载体,可由DPMS(Dynamic Page Manager Service,动态Page管理服务)创建、调度、管理,DPMS可维护Page实例的生命周期。
每个Page可以在YunOS中被唯一标识,比如可以使用URI(UniformResource Identifier,唯一资源标识符)对Page进行标识。URI可以理解为一个地址链接,通过该URI可以唯一地确定出其对应的Page。例如,为了便于区分Page提供的服务,为该Page分配的URI中可以选择性地包括该服务的相关信息,例如:服务名称、服务内容、服务提供方等。
Page之间可以传递事件和/或数据,Page可以通过UI与用户进行交互,以提供服务。
(2)域
可称为“domain”,domain可以理解为应用程序的逻辑分组。进行域的划分有利于权限隔离以及其他管理配置操作。
为了提供统一的资源标识,以方便资源访问,本申请实施例中定义了资源标识格式。所定义的资源标识格式中包含路径域,用于承载资源的相对路径,更具体地,该相对路径是指资源在其所属域(domain)中的路径。
进一步地,所定义的资源标识中还可包括资源类型域,用于承载资源类型的指示信息,这里的资源类型是从资源存储的角度定义的。本申请实施例中,举例来说,存储在终端内的外部存储器中的资源属于一种类型的资源,比如存储于终端内的外部存储器,即除SIM(Subscriber Identity Module,用户识别模块)卡等用户身份识别卡以外的存储器,比如SD卡(Secure Digital MemoryCard)上的资源为一种类型的资源,以区别于存储在移动终端SIM卡或类似用户身份识别卡中的资源或存储于网络侧(比如云端)的资源。
在一些情况中,终端的SD卡中通常只存储应用程序的运行时资源,而终端的SIM卡中可存储应用程序本身的资源以及运行时的资源,且应用程序本身的资源和运行时资源通常存储在不同的目录中。针对这种资源存储结构,为了进一步区分资源是应用程序本身的资源还是运行时的资源,可对资源类型进一步进行扩展,这样,资源的类型可包括三种,分别称为第一类型、第二类型和第三类型:
-第一类型:用于表示资源存储于外部存储器;
-第二类型:用于表示资源未存储于外部存储器,如存储于本地,比如未存储于外部存储器而存储于SIM卡中,且资源为应用程序本身的资源,比如,应用程序安装包解压后的资源;
-第三类型:用于表示资源未存储于外部存储器,如存储于本地,比如未存储于外部存储器而存储于SIM卡中,且资源为应用程序运行时的资源,比如,运行时产生的资源。
此外,资源类型还可以包括:
-第四类型,用于表示资源存储于网络侧(如云端)。
针对上述三种资源类型,本申请实施例中可在资源标识中定义资源类型域,通过不同的取值来区分上述三种资源类型。该资源类型域可以是一个字段也可以是多个字段,在一种优选的资源标识格式中,包含2个资源标识字段:第一字段(以下称为“scheme”字段)和第二字段(以下称为“subscheme”字段)。其中,若资源类型为第一类型,则“scheme”字段的取值为“file”,此时无需“subscheme”字段或将“subscheme”字段取值为Null(空);若资源类型为第二类型或第三类型,则“scheme”字段的取值为“page”,此时需要通过“subscheme”段的取值进一步进行区分,具体地,若资源类型为第二类型,则“subscheme”字段的取值为“asset”,若资源类型为第三类型,则“subscheme”字段的取值为“data”。进一步地,“scheme”字段的取值还可以是“http”或“https”,表示访问的是网络侧存储的资源,比如云端的资源。
在一些情况中,以资源所属域(domain)来设置资源的存储结构,属于同一域的资源保存在相同目录下,属于不同域的资源保存在不同目录下。针对这种资源存储结构,本申请实施例所定义的资源标识格式中还可包括资源所属域的信息域,用于承载资源所属域的指示信息,比如可以是域名。
在一些情况中,针对同一应用程序,不同用户使用该应用程序时相关的资源保存不同用户的目录下,具体可用用户名来创建不同用户的目录,以保存不同用户相关的资源。针对这种资源存储结构,本申请实施例所定义的资源标识格式中还可包括用户信息域,用来承载用户信息,比如用户名,以指示应用程序使用者。举例来说,用户使用应用程序时首先进行登录,之后才能发起资源访问请求,针对发起的资源访问请求,其所请求的目标资源的标识中所包含的用户信息即为该登录用户的用户信息,比如可以是该用户登录时的用户名。
更进一步地,本申请实施例所定义的资源标识格式中还可包括参数域,用来承载资源访问时需要传递的参数。比如,对于互联网支付应用程序来时,可将支付用的银行***作为参数承载于资源标识中的参数域。
上述资源标识中的各种信息域,其在资源标识中的位置预先约定,本申请实施例对此不作限制。
基于以上资源标识格式定义,优选地,本申请实施例使用URI(UniformResource Identifier,统一资源标识符)标识资源。该URI格式符合H5协议规定,可兼容w3c的HTTP(HyperText Transfer Protocol,超文本传输协议)和HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer,超文本传输安全协议)等协议。下面示例性地示出了一种资源URI的格式:
scheme://username/domain/subscheme/path?param1=xxx¶m2=xxx
上述URI格式中的各信息域的含义如下所述:
scheme域:资源类型域,用于承载资源类型指示信息。该信息域为必选项。该信息域的取值为page或file。若scheme域的取值为file,则表示该资源为第一类型;若scheme域的取值为page,则需要进一步依据subscheme域的取值确定资源的类型。scheme域的取值还可以是“http”或“https”,表示访问的资源为云端资源。
subscheme域:扩展的资源类型域,用于承载资源类型的扩展指示信息。该信息域为可选项。当scheme域的取值为file时,URI中不包括subscheme域,或subscheme域的取值为Null;当scheme域的取值为page时,URI中包括subscheme域。subscheme域的取值可以是asset或data,若subscheme域的取值为asset,则表示该资源为应用程序本身的资源,若subscheme域的取值为data,则表示该资源为应用程序运行时的资源。
username域:用于承载发起资源访问请求的用户的信息,比如用户名;
domain域:用于承载资源所属的域的指示信息,比如域名;
path域:用于承载资源在其所属域中的路径,即相对路径;path中也可以包含“asset”或“data”,这里的asset或data代表相对路径的结构,比如其中的一级目录;
param域:用于承载需要传递的参数。
以下示例性地示出了一个用于标识资源的URI的例子:
page://yongsheng/tv.yunos.com/data/document/test/test.html?name=”good”&value=”1”
上述URI表示:资源类型为第三类型(scheme域的取值为page,subscheme域的取值为data),该资源所属域为“tv.yunos.com”,该资源在其所属域中的路径为“document/test/test.html”,传递的参数包括name=”good”&value=”1”,发起资源访问请求的用户的用户名为“yongsheng”。
参见图1,为本申请实施例提供的资源访问***的结构示意图。该***可位于终端侧,具体可由软件实现,或者由软件和硬件相结合的方式实现,具体地,该***可基于C++、node.js、js等技术实现。
如图所示,资源访问***100可包括:解析模块10、生成模块20和访问管理模块30。
解析模块10主要提供资源标识解析能力,比如解析资源的URI;生成模块20主要提供根据相对路径生成绝对路径的功能;访问管理模块30主要提供资源访问以及管理能力。其中,访问管理模块30的资源管理能力可体现在对资源的目录进行管理,比如创建、修改或删除资源目录,还可以拷贝资源到不同目录等。
具体地,在资源访问过程中,解析模块10用于接收资源访问请求,解析该资源访问请求中携带的目标资源的标识,至少得到该目标资源的类型和相对路径;生成模块20根据解析得到的信息生成目标资源的绝对路径;访问管理模块30用于根据目标资源的绝对路径对该目标资源进行访问。进一步地,在访问得到资源后,访问管理模块30可将获得到的资源提供给浏览器引擎(Browser Engine)以进行页面重新布局渲染刷新显示。
其中,访问管理模块30可基于基本类库实现资源的打开、关闭、读写等访问操作。基本类库可基于POSIX(Portable Operating System Interface,可移植操作***接口)文件实现。POSIX标准定义了操作***应该为应用程序提供的接口标准。
进一步地,上述资源访问***中还可包括网络服务模块40。访问管理模块30在访问资源失败时(如未查找到目标资源),则通过网络服务模块40发起资源同步过程。网络服务模块40可与远程服务器交互,通过HTTP或HTTPS等协议与远端服务器进行资源同步和更新。
基于上述资源标识格式定义,图2示例性地示出了本申请实施例提供的资源访问流程。
参见图2,为本申请实施例提供的资源访问流程示意图。该流程可由上述资源访问***实现。如图所示,该流程可包括如下步骤:
步骤201:接收资源访问请求,该资源访问请求中携带有所请求访问的目标资源的标识。
其中,资源访问请求可由应用程序(如互联网应用程序)发起。资源访问请求中携带有所请求访问的目标资源的标识,如目标资源的URI,该URI的格式可如前述实施例所述。进一步地,资源访问请求中还可以携带操作类型信息,所述操作类型包括但不限于增加、修改、删除、查询等操作中的一种或多种组合。
步骤202:解析目标资源的标识,至少得到该目标资源的类型和相对路径。该步骤可由资源访问***100中的解析模块10执行。
如前所述,资源标识中至少包含有资源类型指示信息和相对路径,因此解析得到的信息中至少包括目标资源的类型和相对路径。如果资源标识中还包含其他信息,比如资源所属域的域名、发起资源访问请求的用户的用户名、参数等中的一种或多种,则解析出的信息中也包括上述所包含的内容。
进一步地,为提高安全性,在解析目标资源的标识之前,可首先对目标资源的标识的格式进行合法性验证,如果验证通过,则可对该目标资源的标识进行解析以及执行后续步骤,否则,表明该目标资源的标识为非法标识,拒绝对其进行解析,从而拒绝响应该资源访问请求。其中,若资源标识使用URI,则根据前述定义的规则对该URI进行格式验证。
步骤203:根据解析得到的信息,生成该目标资源的绝对路径。该步骤可由资源访问***100中的生成模块20执行。
该步骤中,根据目标资源的数据类型的不同,生成目标资源的绝对路径时,可包括以下情况中的一种:
情况1:若目标资源类型的指示信息指示该目标资源的类型为第一类型,则可根据外部存储器中的资源存储结构以及该目标资源的相对路径,生成该目标资源在该外部存储器中的绝对路径。
更具体地,在目标资源的标识中还包含目标资源所属域的指示信息的情况下,可根据外部存储器中的资源存储结构确定该目标资源所属域所在的目录,根据该目录以及该目标资源的相对路径,生成该目标资源在该外部存储器中的绝对路径。
比如,资源访问请求中携带的目标资源的URI为:
file://yongsheng/tv.yunos.com/document/test/test.html
终端SD卡中tv.yunos.com域的资源所在的目录为:
pageresource/yongsheng/tv.yunos.com
则根据上述目标资源的URI以及SD卡中的资源存储结构,生成如下所示的目标资源在该SD卡中的绝对路径:
pageresource/yongsheng/tv.yunos.com/document/test/test.html
情况2:若目标资源类型的指示信息指示该目标资源的类型为第二类型或第三类型,则根据本地资源存储结构以及该目标资源的相对路径,生成该目标资源在本地的绝对路径。
更具体地,在情况2中,若目标资源类型的指示信息指示该目标资源的类型为第二类型,则根据本地的应用程序本身资源的存储结构确定该目标资源所属域所在的目录,根据该目录以及该目标资源的相对路径,生成该目标资源在本地的绝对路径;若目标资源类型的指示信息指示该目标资源的类型为第三类型,则根据本地的应用程序运行时资源的存储结构确定该目标资源所属域所在的目录,根据该目录以及该目标资源的相对路径,生成该目标资源在本地的绝对路径。
比如,资源访问请求中携带的目标资源的URI为:
page://yongsheng/tv.yunos.com/asset/document/test/test.html
终端SIM卡中tv.yunos.com域的应用程序解压缩后的资源所在的目录为:
pageresource/unzip/tv.yunos.com
则根据上述目标资源的URI以及SIM卡中的资源存储结构,生成如下所示的目标资源在该SIM卡中的绝对路径:
pageresource/unzip/tv.yunos.com/document/test/test.html
再比如,资源访问请求中携带的目标资源的URI为:
page://yongsheng/tv.yunos.com/data/document/test/test.html
终端SIM卡中tv.yunos.com域的应用程序运行时的资源所在的目录为:
pageresource/running/tv.yunos.com
则根据上述目标资源的URI以及SIM卡中的资源存储结构,生成如下所示的目标资源在该SIM卡中的绝对路径:
pageresource/running/tv.yunos.com/document/test/test.html
情况3:若目标资源类型的指示信息指示该目标资源的类型为第四类型,则向网络侧(比如云端)发送该资源访问请求,其资源访问过程可采用现有方式实现,在此不再赘述。
进一步地,如果资源在外部存储器或者本地的存储结构中,包含用户名目录以分别存储不同登录用户对应的资源,那么相应地,在生成资源的绝对路径时,还需要将解析得到的用户名作为生成资源绝对路径的依据之一。
进一步地,在一些实施例中,操作***支持多种语言,这种情况下,不同语言设置的情况下,资源的存储结构不同,或者不同语言设置的情况下,同一应用程序的资源存储在不同的目录中。相应地,在步骤203中生成目标资源的绝对路径时,需要考虑当前的语言设置,不同的语言设置情况下,同一目标资源的绝对路径有所不同。
步骤204:根据该目标资源的绝对路径对该目标资源进行访问。该步骤可由资源访问***100中的访问管理模块30执行。
本申请实施例中,可预先设置DataManager JS API,该API(ApplicationProgramming Interface,应用程序编程接口)是对应用程序本身的资源以及运行时的资源进行访问的统一接口。访问管理模块30可通过DataManager JS API对应用程序本身的资源或者对应用程序运行时的资源进行访问,具体可通过Node_DataManager调用DataManager JS API实现对资源的访问。其中,Node_DataManger是对访问管理模块30的JS封装(Wrapper)的插件(Addon)实现。Data Manager JS API可实现直接基于Node.js JS API,这样可以避免Node_DataManager的复杂繁多的接口实现,有效的复用Node.js的接口,设计实现更加简洁。
为了提高安全性,可在根据目标资源的绝对路径进行资源访问之前,根据预先设定的访问权限判决规则对该资源访问请求的访问权限进行判决,若访问权限判决通过,则执行资源访问,否则拒绝执行资源访问。进行访问权限判决的依据可包括目标资源所属的域和/或资源访问请求发起方用户信息。
具体实施时,在一些实施例中,可以预先针对不同域或不同的资源标识设置各自对应的用户列表,该用户列表中可包括一个或多个用户信息(如用户名),该用户列表中的用户有权访问对应的资源(即该用户列表为白名单用户列表),或者该用户列表中的用户无权访问对应的资源(即该用户列表为黑名单用户列表)。这样,在根据目标资源的绝对路径进行资源访问之前,可根据目标资源所属的域或者根据目标资源的标识获取对应的用户列表,根据解析得到的发起资源访问请求的用户的信息,并结合获取到的用户列表进行访问权限判决,如果发起方用户属于该列表中的用户,则在该用户列表中的用户为有权访问(即该用户列表为白名单用户列表)的情况下,访问权限判决通过,在该用户列表中的用户无权访问(即该用户列表为黑名单用户列表)的情况下,访问权限判决不通过。
当然,上述用户列表的内容也可设置为“全部(ALL)”以表示该资源可被所有用户访问,或者设置为“空(NULL)”以表示该资源不能被用户访问。
具体实施时,在另一些实施例中,可以预先针对不同用户设置各自对应的资源列表,该资源列表中可包括一个或多个资源的URI和/或包括资源所属的域,该资源列表中的资源可被对应用户访问(即该资源列表为白名单资源列表)或者不能被对应用户访问(即该资源列表为黑名单资源列表)。这样,在根据目标资源的绝对路径进行资源访问之前,可根据资源访问请求发起方用户的信息获取对应的资源列表,根据目标资源的URI或者解析得到的目标资源所属的域,并结合获取到的资源列表进行访问权限判决,如果目标资源属于该列表中的资源,则在该资源列表中的资源为有权被访问(即该资源列表为白名单资源列表)的情况下,访问权限判决通过,在该资源列表中的资源无权被访问(即该资源列表为黑名单资源列表)的情况下,访问权限判决不通过。
当然,上述资源列表的内容也可设置为“全部(ALL)”以表示该用户对所有资源均有权访问,或者设置为“空(NULL)”以表示该用户对所有资源均无权访问。
当然,上述两种判决方式也可以相互结合使用,在此不再赘述,这样可以进一步提高资源访问的安全性。
具体实施时,在另一些实施例中,可预先配置资源访问的秘钥,所存储的资源是先进行加密处理再进行存储的。当对目标资源进行访问时,需要使用相应的秘钥进行解密操作,只有解密成功,才能进行资源访问。这样,对于合法用户来说,可以使用预先配置的资源访问秘钥对目标资源进行解密处理,得到解密后的目标资源;对于非法用户来说,因无法获取到秘钥进而无法进行资源访问,从而提高资源访问的安全性。
进一步地,如果上述流程中,在步骤204中根据目标资源的绝对地址进行资源访问失败,即未获取到请求访问的资源时(这种情况通常是由于请求访问的资源不在本地而是在其他终端上或在云端时),可执行资源同步过程,从而将其他终端或云端上的资源同步到本地。
具体地,访问管理模块30可向网络服务模块40发送资源同步请求,并接收网络侧根据该资源同步请求返回的资源(其中包括所请求访问的目标资源),从而与网络侧的资源保持同步。
通过以上描述可以看出,本申请的上述实施例中,资源访问请求中的目标资源标识中包含相对路径而非绝对路径,通过解析该目标资源标识可得到该相对路径以及目标资源的类型,根据解析得到的信息生成该目标资源的绝对路径,从而根据该绝对路径访问目标资源。由于目标资源标识中无需携带绝对路径,因而克服了现有技术中需要在资源访问请求中携带目标资源的绝对路径所导致的问题。
另一方面,由于资源访问请求中的目标数据在标识中包含的目标资源路径为相对路径,比如是该目标资源在其所属域中的路径,这样,当给目标资源所属域的目录有所改变的情况下,无需改变该目标资源的相对路径也可访问到该资源。
更为具体地,通过本申请的上述实施例可以实现以下目的:
-通过定义新的URI来标识资源,便于实现统一访问的标准化定义;
-定义资源类型来标识本地(或称非外部存储器)的资源,便于区分不同类型的资源,方便本地、外部存储器和云端的资源访问;
-通过相对路径访问资源,无需用户输入资源的绝对路径,通过相对路径可以跨域访问资源。
-本地或云端资源的访问使用统一化接口,便于应用开发者进行应用程序开发。
采用本申请实施例,可以实现以下功能:
-资源访问:以本申请实施例定义的资源标识,提供一种统一的资源访问方式,从而可以便捷地访问本地或云端的资源;
-资源缓存:以本申请实施例定义的资源标识,进行资源的缓存;
-资源同步:以本申请实施例定义的资源标识,实现本地与云端的资源同步,也可实现终端与终端间的资源同步;
-资源隔离:实现资源的安全访问,实现跨域访问;
-资源共享:实现资源的云端共享(比如属于一个用户的所有终端上的资源均与云端保持同步),可实现端端共享(比如一个用户的不同终端上的资源可以进行访问或同步),还可实现跨域共享。
基于相同的技术构思,本申请实施例还提供了一种终端。
参见图3,为本申请实施例提供的终端的结构示意图。该终端总体来说可包括:处理器301,存储器302、显示器303。
其中,处理器301可以是通用处理器(比如微处理器或者任何常规的处理器等)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。存储器302具体可包括内部存储器和/或外部存储器,比如随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质。显示器303可包括触摸屏控制电路。
处理器301与其他各模块之间存在数据通信连接,比如可基于总线架构进行数据通信。总线架构可以包括任意数量的互联的总线和桥,具体由处理器301代表的一个或多个处理器和存储器302代表的存储器的各种电路链接在一起。总线架构还可以将诸如***设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。处理器301负责管理总线架构和通常的处理,存储器302可以存储处理器301在执行操作时所使用的数据。
本申请实施例揭示的资源管理流程,可以应用于处理器301中,或者由处理器301实现。在实现过程中,图片搜索流程的各步骤可以通过处理器301中的硬件的集成逻辑电路或者软件形式的指令完成。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。
具体地,处理器301,耦合到存储器302,用于读取存储器302存储的计算机程序指令,并作为响应,执行如下操作:
接收资源访问请求,所述资源访问请求中携带有所请求访问的目标资源的标识;
解析所述目标资源的标识,至少得到所述目标资源的类型和相对路径;
根据解析得到的信息,生成所述目标资源的绝对路径;
根据所述目标资源的绝对路径对所述目标资源进行访问。
其中,资源标识可以是资源URI。
其中,所述URI中包括以下信息域:
资源类型域,用于承载资源类型指示信息;
域名域,用于承载资源所属域的指示信息;
路径域,用于承载资源在其所属域中的路径。
其中,所述资源类型域包括第一字段和第二字段;若所述第一字段的取值表明所述目标资源的类型为第一类型,则所述第二字段为空;否则,所述第二字段的取值表明所述目标资源的类型为第二类型或第三类型。
进一步地,所述URI中还包括以下信息域中的一种或组合:
用户信息域,用于承载发起资源访问请求的用户的信息;
参数域,用于承载参数。
优选地,所述目标资源的标识中包含目标资源类型的指示信息,其中,资源的类型包括:
第一类型,用于表示资源存储于外部存储器;
第二类型,用于表示资源未存储于外部存储器,且资源为应用程序本身资源;
第三类型,用于表示资源未存储于外部存储器,且资源为应用程序运行时资源。
其中,所述目标资源的标识中包括:资源类型指示信息域,所述资源类型指示信息域包括第一字段和第二字段;
若所述第一字段的取值表明所述目标资源的类型为第一类型,则所述第二字段为空;否则,所述第二字段的取值表明所述目标资源的类型为第二类型或第三类型。
优选地,处理器301在生成所述目标资源的绝对路径时,可具体用于:若所述目标资源类型的指示信息指示所述目标资源的类型为第一类型,则根据外部存储器中的资源存储结构以及所述目标资源的相对路径,生成所述目标资源在所述外部存储器中的绝对路径;若所述目标资源类型的指示信息指示所述目标资源的类型为第二类型或第三类型,则根据本地资源存储结构以及所述目标资源的相对路径,生成所述目标资源在本地的绝对路径。
其中,所述目标资源的标识中还包含所述目标资源所属域的指示信息。相应地,处理器301可根据外部存储器中的资源存储结构确定所述目标资源所属域所在的目录,根据该目录以及所述目标资源的相对路径,生成所述目标资源在所述外部存储器中的绝对路径。
优选地,所述目标资源的标识中还包含所述目标资源所属域的指示信息。相应地,处理器301可在所述目标资源类型的指示信息指示所述目标资源的类型为第二类型的情况下,根据本地的应用程序本身资源的存储结构确定所述目标资源所属域所在的目录,根据该目录以及所述目标资源的相对路径,生成所述目标资源在本地的绝对路径;在所述目标资源类型的指示信息指示所述目标资源的类型为第三类型的情况下,根据本地的应用程序运行时资源的存储结构确定所述目标资源所属域所在的目录,根据该目录以及所述目标资源的相对路径,生成所述目标资源在本地的绝对路径。
优选地,处理器301在解析所述目标资源的标识之前,还可对所述目标资源的标识的格式进行合法性验证。
优选地,所述目标资源的标识中包含所述目标资源所属域的指示信息,所述解析得到的相对路径为所述目标资源在所属域中的路径;和/或,所述目标资源的标识中包含所述资源访问请求的发起方用户信息。
相应地,处理器301可在根据所述目标资源的绝对路径对所述目标资源进行访问之前,根据所述资源访问请求的发起方用户信息、目标资源所属域的指示信息中的一种或多种组合,以及预设的访问权限判决规则,对所述资源访问请求进行访问权限判决。
其中,处理器301可根据所述资源访问请求的发起方用户信息获取对应的预先设置的资源列表,根据所述发起方用户信息以及获取到的资源列表对所述资源访问请求进行访问权限判决,其中,所述资源列表中的资源有权或无权被所述发起方用户访问;或者,根据所述资源访问请求中携带的目标资源标识或目标资源所属域获取对应的预先设置的用户列表,根据所述目标资源标识或目标资源所属域,以及获取到的用户列表对所述资源访问请求进行访问权限判决,其中,所述用户列表中的用户有权或无权访问所述目标资源。
优选地,处理器301可在根据所述目标资源的绝对路径对所述目标资源进行访问时,使用预先配置的资源访问秘钥对目标资源进行解密处理,得到解密后的目标资源。
优选地,处理器301在根据所述目标资源的绝对路径对所述目标资源进行访问时访问失败的情况下,还可发起资源同步过程。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。