本申请涉及计算机通信技术领域,具体涉及一种访问控制方法、装置、电子设备和计算机可读存储介质。
背景技术:
随着互联网技术的不断发展,各个公司和应用之间对于数据的开放需求日渐强烈。因此,各个公司都在寻求可以实现整合互联网中的各个服务的方案。在众多方案中,平台开放的方法脱颖而出。通过构建开放平台,开发者可以把自己的各种服务封装成对外开放的api(applicationprogramminginterface,应用程序编程接口),资源访问者通过这套api可以使用服务器上的资源。开放平台的核心问题在于资源访问者的验证和授权上。出于安全性的考虑,在实现开放平台时必然涉及到权限控制的问题。包括资源的拥有者如何按照自己的意愿把接入访问的权限暴露给资源访问者。
现有技术中有一些实现访问控制的方法,例如采用cookie(缓存)-session(会话)模式。然而,该cookie-session模式是基于有状态服务器的验证,即服务器上保存用户的登录session,用户发送请求时附带服务器签发的cookie,服务器根据存储的session内容与cookie对比来验证用户的身份。在分布式服务器架构中,用户请求可能就会由不同服务器进行处理,就需要进行多服务器的session同步,这并不利于进行分布式扩展,限制了负载均衡的能力。此外,cookie-session模式需要访问端向认证机构给出自己的一些高度私密的信息,诸如用户名,密码等。这容易造成访问端的信息的泄露,对于资源访问者和资源拥有者来说都是很不好的一种解决方案。
现有技术中还存在一些其他的基于身份认证实现的访问控制方式。这些控制方式虽然对用户身份做了认证,但并没有做权限的细粒度判定,比如并无法从资源对象角度上实现细粒度权限访问控制。权限细粒度验证方式是与用户的身份认证分离的,往往是通过用户标识去查表得到用户角色,再根据用户角色查表得到操作权限。这种访问控制方式的业务耦合度较高,访问权限验证流程复杂且需要定制化,通用性差。
技术实现要素:
有鉴于此,本申请实施例提供了一种访问控制方法、装置、电子设备和计算机可读存储介质,解决了现有访问控制方式不利于分布式扩展、安全性差以及通用性差的问题。
根据本申请的一个方面,本申请一实施例提供一种访问控制方法包括:基于用户提交的身份认证信息对所述用户进行身份认证;当身份验证通过时,从所述身份认证信息中获取用户角色信息;以及基于所述用户角色信息获取所述用户的操作权限。
根据本申请的另一个方面,本申请一实施例提供一种访问控制装置包括:身份认证模块,配置为基于用户提交的身份认证信息对所述用户进行身份认证;角色获取模块,配置为当身份验证通过时,从所述身份认证信息中获取用户角色信息;以及鉴权模块,配置为基于所述用户角色信息获取所述用户的操作权限。
根据本申请的另一方面,提供了一种电子设备,包括:处理器;存储器;以及存储在存储器中的计算机程序指令,计算机程序指令在被处理器运行时使得处理器执行如上述任一项所述的访问控制方法。
根据本申请的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行如前任一所述的访问控制方法。
根据本申请的另一方面,提供了一种计算机程序产品,包括计算机程序指令,所述计算机程序指令在被处理器运行时使得处理器执行如上述任一所述的访问控制方法。
本申请实施例提供的一种访问控制方法、装置、电子设备和计算机可读存储介质,将用于进行权限验证的用户角色信息携带在用于身份认证的身份认证信息中。这样当身份验证通过时,可直接从身份认证信息中获取用户角色信息,从而实现了权限验证与身份认证的关联。相比于现有技术需要通过用户标识去查表得到用户角色,申请实施例提供的访问控制方法减少了该查表过程,从而简化了访问权限验证流程,有利于网络数据传输安全。同时由于权限可以预先配置,用户认证过程可以独立运行,且用户认证过程可以与基于角色的权限访问控制直接衔接,权限配置、用户认证和基于角色的权限访问控制三部分可分别由独立的中间件模块运行,由此可实现一种模块化且插件化的访问控制管理系统,大大降低了与具体业务的耦合度,非常适应于应用扩展,通用性高。
附图说明
图1所示为本申请一实施例提供的一种访问控制方法的流程示意图。
图2所示为本申请一实施例提供的一种访问控制方法所适用的系统架构示意图。
图3所示为本申请一实施例提供的一种访问控制方法中网络令牌载荷的配置过程的流程示意图。
图4所示为本申请一实施例提供的访问控制方法中采用接入密钥标识/秘密接入密钥加密认证方式进行身份认证的流程示意图。
图5所示为本申请一实施例提供的一种访问控制装置的结构示意图。
图6所示为本申请另一实施例提供的一种访问控制装置的结构示意图。
图7所示为本申请另一实施例提供的一种访问控制装置的结构示意图。
图8所示为本申请一实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
申请概述
如上所述,传统的访问控制方法虽然能够起到访问控制的目的,但在实现访问控制的过程中需要用户直接提供给服务器私密信息,这容易因为信息的泄露而造成安全风险。此外,权限细粒度验证方式是与用户的身份认证分离的,这种访问控制方式的业务耦合度较高,访问权限验证流程复杂且需要定制化,通用性差。
针对上述的技术问题,本申请的基本构思是提出一种访问控制方式,利用身份认证信息来完成身份认证,并将用于权限验证的用户角色信息携带在用户身份信息中,由此实现权限验证与身份认证的关联,减少了通过用户标识去查表得到用户角色的查表过程。简化了访问权限验证流程,有利于网络数据传输安全。而且可提高访问控制系统的可扩展性和通用性。
需要说明的是,本申请所提供的访问控制方法可以应用于任何场景下的访问控制过程。具体而言,用户对服务器进行访问的目的就是要对服务器上的资源进行特定的操作,该资源可以是计算资源也可以是存储资源,例如计算资源就可为用于完成人脸识别或机械控制的神经网络模型,存储资源就可为云存储资源等,服务器上的资源所能够满足的功能与服务器本身的应用场景有关,本申请对服务器的应用场景不做限定,也对该访问控制方法所适用的场景不做限定。
在介绍了本申请的基本原理之后,下面将参考附图来具体介绍本申请的各种非限制性实施例。
示例性访问控制方法
图1所示为本申请一实施例所提供的访问控制方法的流程示意图。如图1所示,该访问控制方法包括如下步骤:
步骤101:基于用户提交的身份认证信息对用户进行身份认证。
用户提交的身份认证信息为证明用户合法身份的一些用户特征信息,当用户提交的身份认证信息通过验证时,说明该用户为合法用户,然后才会进一步判断该用户对要访问的服务器有哪些操作权限。应当理解,身份认证信息的具体内容和形式可根据具体采用的认证方式而调整。本发明对身份认证信息的具体内容和形式不做限定。
步骤102:当身份验证通过时,从身份认证信息中获取用户角色信息。
当身份验证通过时,意味着该用户提供了合法的身份认证信息,此时则基于用户提交的身份认证信息来获取用户角色信息,以实现对于用户的角色鉴别。用户角色信息与用户所能执行的操作权限有关,用户角色信息以及对应的操作权限可以是针对该用户预先配置的。而当身份验证不通过时,说明用户提供的身份认证信息为非法信息,此时则无法获取用户角色信息。
应当理解,用户角色信息可包括表征用户角色的一些属性信息,例如,用户所从属的角色分类、用户标识、用户所属租户信息等。其中,角色分类可为具体场景下根据用户身份确定的用户分类,例如在校园教育场景下,角色分类就可能包括学生分类、教师分类和家长分类。用户标识可以通过与用户唯一相关的字符串来表示,例如字母和数字组合而成的长字符串,用于唯一标识当前用户。在本申请一实施例中,为了能在多用户需要访问相同的资源的场景下,确保各用户间数据的隔离性,可采用多租户架构来实现访问控制。每个租户能够允许自己的用户访问资源,资源也只允许每个租户自己的用户访问该租户对应的资源。因此在这种场景下,用户角色信息中还需包括当前用户所属租户信息。应当理解,用户角色信息为用于建立用户与操作权限之间关联关系的中间信息,然而本申请对用户角色信息的具体内容并不做限定。
步骤103:基于用户角色信息获取用户的操作权限。
用户的操作权限决定着经过身份验证的合法用户可以对要访问的服务器上的哪些资源进行哪些操作,用户角色信息与用户的操作权限之间的对应关系可以是预先配置好的。可以预先为多个角色配置操作权限,这样用户可以通过扮演不同的角色来获得角色的操作权限。这样访问控制的过程其实为:当从身份认证信息中获取用户角色信息后,服务器即可决定资源访问者可以以哪种角色对资源进行哪些控制操作,通过用户角色信息完成用户和操作权限之间的关联。在获取到用户的操作权限后,即可根据用户对服务器上某个资源的访问操作进行鉴权,若鉴权通过,则服务器即可响应用户对该资源的操作请求。
在本申请一实施例中,用户和用户角色信息所表征的角色可以是多对多关系,用户角色信息所表征的角色和操作权限也可以是多对多关系,例如在校园教育场景下,用户角色信息所表征的角色就可能包括学生、教师和家长;操作权限可能包括获取学生作业信息和获取学生考勤信息。此时就可配置为教师和家长都具备获取学生作业信息和学生考勤信息的操作权限,这样角色和操作权限就是多对多的关系。然而,本发明对这些预先配置的具体原则不做限定。
在本申请一实施例中,可以设置管理员账号来实现对于用户角色信息所表征的角色和操作权限的预先配置。具体而言,服务器可执行管理员账号对于用户的用户角色的编辑指令,编辑指令可包括以下指令中的一种或多种:增加用户的用户角色、删除用户的用户角色、增加用户的用户角色可访问的资源、以及减少用户的用户角色可访问的资源。
在本申请一实施例中,如图2所示,上述用户角色管理221和权限管理222的配置操作可在与网络服务器(webserver)22通信连接的控制台21上进行。具体而言,用户可以通过管理员账号登陆该控制台21,以进行用户角色管理221和权限管理222,该网络服务器22用于具体执行该用户的角色和权限的配置。此外该网络服务器22还与数据库23通信连接,该数据库23分别与用户认证模块24和细粒度权限验证模块25通信连接,细粒度权限验证模块25与资源服务器26通信连接。数据库23中存储有进行身份认证和获取操作权限时需要查询的必要信息。当用户提交身份认证信息以进行身份认证时,用户认证模块24从数据库23中获取进行身份认证的必要信息以完成身份认证。当身份认证通过时,细粒度权限验证模块25从数据库23中获取必要信息以获取用户角色对应的操作权限,并使得用户可以对资源服务器26上的资源进行操作,从而完成访问控制过程。
由此可见,本申请实施例提供的一种访问控制方法,将用于进行权限验证的用户角色信息携带在用于身份认证的身份认证信息中。这样当身份验证通过时,可直接从身份认证信息中获取用户角色信息,从而实现了权限验证与身份认证的关联。相比于现有技术需要通过用户标识去查表得到用户角色,申请实施例提供的访问控制方法减少了该查表过程,从而简化了访问权限验证流程,有利于网络数据传输安全。同时由于权限可以预先配置,用户认证过程可以独立运行,且用户认证过程可以与基于角色的权限访问控制直接衔接,权限配置、用户认证和基于角色的权限访问控制三部分可分别由独立的中间件模块运行,由此可实现一种模块化且插件化的访问控制管理系统,大大降低了与具体业务的耦合度,非常适应于应用扩展,通用性高。
在本申请一实施例中,身份认证信息可通过网络令牌(例如,javascriptobjectnotationwebtoken,java脚本对象注释网络令牌)实现,该网络令牌包括网络令牌载荷,用户角色信息可以携带在该网络令牌载荷中。具体而言,当采用网络令牌载荷实现身份认证时,用户会在首次访问成功后获得服务器发送的网络令牌,网络令牌载荷为网络令牌结构的一部分。为了防止用户篡改数据,服务器将在生成网络令牌时会添加签名。这样后续用户与服务器通信时需要在请求中发回该网络令牌。服务器仅依赖于这个网络令牌来标识用户。服务器不保存任何会话数据,即服务器变为无状态,会使得访问控制系统更容易扩展。这样,当从身份认证信息中获取用户角色信息时,其实是从用户提交的身份认证信息中获取携带用户角色信息的网络令牌载荷,然后解析该网络令牌载荷以提取用户角色信息。
在本申请一实施例中,用户角色信息是在用户首次请求访问服务器时被配置好,并存入网络令牌载荷的。如图3所示,该网络令牌载荷的配置过程可包括如下步骤:
步骤201:接收到来自用户的授权请求。
该授权请求为用户首次请求访问服务器时的访问请求,当获取到服务器返回的网络令牌后,用户后续可通过提供网络令牌(即身份认证信息)来验证自己的合法身份。
步骤202:当用户的授权请求被许可后,配置与用户对应的用户角色,并将用于表征用户角色的用户角色信息加入网络令牌载荷。
步骤203:向用户返回带有用户角色信息的网络令牌载荷。
这样后续用户再次请求访问服务器上的资源时,就会在访问请求中发回该网络令牌,该网络令牌的网络令牌载荷中便会携带用户角色信息,由此省去了基于用户表示查表获取用户角色的步骤。
在本申请另一实施例中,身份认证信息可为接入密钥标识/秘密接入密钥(accesskeyid/secretaccesskey)加密认证方式中的接入密钥(accesskey),用户角色信息为与接入密钥对应的身份标识(appid)。
图4所示为本申请一实施例提供的访问控制方法中采用接入密钥标识/秘密接入密钥加密认证方式进行身份认证的流程示意图。如图4所示该访问控制方法包括如下步骤:
步骤301:用户首先根据接入密钥标识、秘密接入密钥、要请求访问的资源的网络地址生成一个认证字符串v1。
服务器会预先发放给用户一对接入密钥标识/秘密接入密钥密钥对,接入密钥标识用于标示用户,秘密接入密钥是用户用于加密认证字符串和开放平台用来验证认证字符串的密钥。用户要访问的服务器上的资源都会有一个网络地址(例如可采用资源定位符url来表征)。该认证字符串v1基于接入密钥标识、秘密接入密钥、要请求访问的资源的网络地址而生成,而生成过程的具体算法可根据实际场景需求而调整,本申请对该生产过程的具体算法不做限定。
步骤302:当服务器接收到来自用户的访问请求时,服务端也会根据接入密钥标识查找秘密接入密钥,同时基于被请求访问的资源的网络地址生成一个认证字符串v2。
步骤303:当判断v1与v2一致时,则身份认证通过,执行步骤304。否则禁止访问。
步骤304:解析用户提交的认证字符串v1以获取接入密钥。
步骤305:根据接入密钥查询对应的身份标识。
用户角色信息由与接入密钥对应的身份标识携带。具体而言,可以在基于用户提交的身份认证信息对用户进行身份认证之前,配置与用户对应的用户角色以及与角色对应的操作权限,然后根据用户角色以及与角色对应的操作权限配置发放给用户的接入密钥所对应的身份标识。当用户的身份认证通过后,即可通过解析认证字符串v1以获取接入密钥,并根据接入密钥查询与接入密钥绑定的身份标识,从而获得用户角色信息。
由于在用户端生成签名的时候是对身份认证信息中的内容信息进行了加密处理,因此可确保认证方式更加安全,这样即使身份认证信息被泄露了,身份认证信息的截获方也很难破解该加密以获取身份认证信息中的内容,因而使得身份认证信息被冒用的可能性很低。
在本申请一实施例中,可基于casbin权限管理模型来配置与用户对应的用户角色以及与角色对应的操作权限,其中用户角色以及与角色对应的操作权限可用perm(policy,effect,request,matchers)模型表征。casbin使用perm模型来表达权限,并且提供了简单直接的api,casbin采用modelfile来定义具体的权限模型,modelfile是一个配置文件,在casbin初始化的时候会加在该配置文件,关于modelfile的相关描述可以参见相关技术中的描述,此处不再详述。modelfile中主要就是定义perm的4个部分,包括[request_definition]、[policy_definition]、[policy_effect]和[matchers]。[policy_effect]部分是对policy生效范围的定义,原语定义了当多个policyrule同时匹配访问请求request时,该如何对多个决策结果进行集成以实现统一决策。权限的检查是基于定义的modelfile和casbin_rule表来完成的。casbin_rule可以理解为数据库中的一张表,这张表里面存储的是角色和权限的相关对应信息,casbin_rule是通过调用casbin的相关接口生成的。因此,配置与用户对应的用户角色以及与该角色对应的操作权限的过程,其实就是对casbin权限管理模型中modelfile和casbin_rule的配置过程。而当获取了用户角色信息后,基于用户角色信息获取用户的操作权限的过程就是通过查询casbin_rule实现的,而查询出的操作权限的具体内容就是基于由modelfile定义的perm模型来表征的。
在本申请一实施例中,该访问控制方法可以反向代理的方式对用户透明,实现用户的无感接入,即用户只需要在访问过程发生身份认证信息即可,而并不会感知到该用户角色信息的植入和获取过程。
示例性访问控制装置
图5所示为本申请一实施例提供的一种访问控制装置的结构示意图。如图5所示,该访问控制装置40包括:身份认证模块401,配置为基于用户提交的身份认证信息对用户进行身份认证;角色获取模块402,配置为当身份验证通过时,从身份认证信息中获取用户角色信息;以及鉴权模块403,配置为基于用户角色信息获取用户的操作权限。
在本申请一实施例中,身份认证模块401进一步配置为:从用户提交的身份认证信息中获取携带用户角色信息的网络令牌载荷。
在本申请一实施例中,如图6所示,该访问控制装置40进一步包括:接收模块404,配置为在基于用户提交的身份认证信息对用户进行身份认证之前,接收到来自用户的授权请求;角色配置模块405,配置为当用户的授权请求被许可后,配置与用户对应的用户角色,并将用于表征用户角色的用户角色信息加入网络令牌载荷;以及返回模块406,配置为向用户返回带有用户角色信息的网络令牌载荷;其中,角色获取模块402进一步配置为:当身份验证通过时,解析网络令牌载荷以提取用户角色信息。
在本申请一实施例中,身份认证信息为接入密钥标识/秘密接入密钥加密认证方式中的接入密钥,用户角色信息为与接入密钥对应的身份标识。
在本申请一实施例中,如图7所示,该访问控制装置40进一步包括:权限配置模块407,配置为在基于用户提交的身份认证信息对用户进行身份认证之前,配置与用户对应的用户角色以及与角色对应的操作权限,根据用户角色以及与角色对应的操作权限配置发放给用户的接入密钥所对应的身份标识;其中,角色获取模块402进一步配置为:当身份验证通过时,解析用户提交的认证字符串以获取接入密钥;以及根据接入密钥查询对应的身份标识。
在本申请一实施例中,如图7所示,该访问控制装置40进一步包括:角色编辑模块408,配置为执行管理员账号对于用户的用户角色的编辑指令,编辑指令包括以下指令中的一种或多种:增加用户的用户角色、删除用户的用户角色、增加用户的用户角色可访问的资源、以及减少用户的用户角色可访问的资源。
上述访问控制装置40中的各个模块的具体功能和操作已经在上面参考图1到图3描述的访问控制方法中进行了详细介绍,因此,这里将省略其重复描述。
需要说明的是,根据本申请实施例的访问控制装置40可以作为一个软件模块和/或硬件模块而集成到电子设备70中,换言之,该电子设备70可以包括该访问控制装置40。例如,该访问控制装置40可以是该电子设备70的操作系统中的一个软件模块,或者可以是针对于其所开发的一个应用程序;当然,该访问控制装置40同样可以是该电子设备70的众多硬件模块之一。
在本申请另一实施例中,该访问控制装置40与该电子设备70也可以是分立的设备(例如,服务器),并且该访问控制装置40可以通过有线和/或无线网络连接到该电子设备70,并且按照约定的数据格式来传输交互信息。
示例性电子设备
图8所示为本申请一实施例提供的电子设备的结构示意图。如图8所示,该电子设备70包括:一个或多个处理器701和存储器702;以及存储在存储器702中的计算机程序指令,计算机程序指令在被处理器701运行时使得处理器701执行如上述任一实施例的访问控制方法。
处理器701可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备中的其他组件以执行期望的功能。
存储器702可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器701可以运行所述程序指令,以实现上文所述的本申请的各个实施例的访问控制方法中的步骤以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如光线强度、补偿光强度、滤光片的位置等信息。
在一个示例中,电子设备70还可以包括:输入装置703和输出装置704,这些组件通过总线系统和/或其他形式的连接机构(图7中未示出)互连。
例如,在该电子设备是如工业生产线上的机器人时,该输入装置703可以是摄像头,用于捕捉待加工零件的位置。在该电子设备是单机设备时,该输入装置703可以是通信网络连接器,用于从外部的可移动设备接收所采集的输入信号。此外,该输入设备703还可以包括例如键盘、鼠标、麦克风等等。
该输出装置704可以向外部输出各种信息,例如可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图7中仅示出了该电子设备70中与本申请有关的组件中的一些,省略了诸如总线、输入装置/输出接口等组件。除此之外,根据具体应用情况,电子设备70还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,包括计算机程序指令,计算机程序指令在被处理器运行时使得处理器执行如上述任一实施例的访问控制方法中的步骤。
计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性访问控制方法”部分中描述的根据本申请各种实施例的访问控制方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器((ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本申请的基本原理,但是,需要指出的是,在本申请中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。
本申请中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本申请的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本申请的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换等,均应包含在本申请的保护范围之内。