访问权限控制方法和装置与流程

文档序号:12906353阅读:240来源:国知局
访问权限控制方法和装置与流程

本发明涉及互联网技术领域,尤其涉及一种访问权限控制方法和装置。



背景技术:

页面的访问权限控制,也称为页面授权,是指针对页面控件元素的访问权限控制。通过访问权限控制,可以控制页面控件元素在前端是否可用或者可见。现有技术中的访问权限控制,往往是从后端获取权限数据,从而在前端依据授权数据,对页面元素进行访问权限控制,进而对授权后的页面进行渲染等步骤。

现有技术中的这种方式,由于在前端执行访问权限控制时,存在页面元素泄露的风险,从而导致原本不可用或不可见的页面元素被篡改为可用或可见,安全性不高。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本发明的第一个目的在于提出一种访问权限控制方法,以解决现有技术中页面权限授权过程中,页面元素容易泄露导致安全性较低的技术问题。

本发明的第二个目的在于提出一种访问权限控制装置。

本发明的第三个目的在于提出一种计算机设备装置。

本发明的第四个目的在于提出一种非临时性计算机可读存储介质。

本发明的第五个目的在于提出一种计算机程序产品。

为达上述目的,本发明第一方面实施例提出了一种访问权限控制方法,包括以下步骤:

当用户端请求访问页面时,提取所述页面中的控件元素;

根据所述用户端的页面权限数据,对所述页面中的控件元素进行访问权限控制,以得到授权后的页面;

向所述用户端发送所述授权后的页面。

作为本发明第一方面的第一种可能的实现方式,所述根据所述用户端的页面权限数据,对所述页面中的控件元素进行访问权限控制,包括:

根据所述用户端的页面权限数据,修改所述页面中的控件元素的文档对象模型dom结构。

作为本发明第一方面的第二种可能的实现方式,所述根据所述用户端的页面权限数据,修改所述页面中的控件元素的文档对象模型dom结构,包括:

遍历所述页面中的控件元素;

针对每一个所述控件元素,根据所述控件元素的标识,查询所述页面权限数据,以确定所述标识对应的权限;所述权限包括只读和/或隐藏;

根据查询到的权限修改所述控件元素的dom结构。

作为本发明第一方面的第三种可能的实现方式,所述根据查询到的权限修改所述控件元素的dom结构,包括:

若查询到的权限为只读,在所述控件元素的dom结构中增加不可用属性;

若查询到的权限为隐藏,删除所述控件元素的dom结构。

作为本发明第一方面的第四种可能的实现方式,所述页面具有taglib标签,所述提取所述页面中的控件元素,包括:

根据web.xml所引入的tld文件,识别所述tld文件中记载的url是否与所述taglib标签中的url一致;

当所述tld文件中记载的url与所述taglib标签中的url一致时,读取所述tld文件中java类路径;

采用所述java类路径下的方法,提取所述页面中具有tag标签的控件元素,以对所述tag标签内部的body体进行解析得到所述控件元素的dom结构。

本发明实施例的访问权限控制方法,接收用户端发送的用于访问页面的请求,提取页面中的控件元素,根据用户端的页面权限数据,对页面中的控件元素进行访问权限控制,以得到授权后的页面,向用户端发送授权后的页面。由于页面权限授权过程是在后台完成的,发送至用户端的页面已经是授权后的页面,从而可以避免将页面权限数据暴露给用户端,解决了现有技术中页面元素容易泄露导致安全性较低的技术问题。

为达上述目的,本发明第二方面实施例提出了一种访问权限控制装置,包括:

提取模块,用于当用户端请求访问页面时,提取所述页面中的控件元素;

控制模块,用于根据所述用户端的页面权限数据,对所述页面中的控件元素进行访问权限控制,以得到授权后的页面;

发送模块,用于向所述用户端发送所述授权后的页面。

作为本发明第二方面的第一种可能的实现方式,所述控制模块,包括:

根据所述用户端的页面权限数据,修改所述页面中的控件元素的文档对象模型dom结构。

作为本发明第二方面的第二种可能的实现方式,所述控制模块,包括:

查询单元,用于遍历所述页面中的控件元素;针对每一个所述控件元素,根据所述控件元素的标识,查询所述页面权限数据,以确定所述标识对应的权限;所述权限包括只读和/或隐藏;

修改单元,用于根据查询到的权限修改所述控件元素的dom结构。

作为本发明第二方面的第三种可能的实现方式,所述修改单元,具体用于:

若查询到的权限为只读,在所述控件元素的dom结构中增加不可用属性;

若查询到的权限为隐藏,删除所述控件元素的dom结构。

作为本发明第二方面的第四种可能的实现方式,所述页面具有taglib标签,所述提取模块,包括:

识别单元,用于根据web.xml所引入的tld文件,识别所述tld文件中记载的url是否与所述taglib标签中的url一致;

读取单元,用于当所述tld文件中记载的url与所述taglib标签中的url一致时,读取所述tld文件中java类路径;

提取单元,用于采用所述java类路径下的方法,提取所述页面中具有tag标签的控件元素,以对所述tag标签内部的body体进行解析得到所述控件元素的dom结构。

本发明实施例的访问权限控制装置,接收用户端发送的用于访问页面的请求,提取页面中的控件元素,根据用户端的页面权限数据,对页面中的控件元素进行访问权限控制,以得到授权后的页面,向用户端发送授权后的页面。由于页面权限授权过程是在后台完成的,发送至用户端的页面已经是授权后的页面,从而可以避免将页面权限数据暴露给用户端,解决了现有技术中页面元素容易泄露导致安全性较低的技术问题。

为达上述目的,本发明第三方面实施例提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现上述访问权限控制方法的步骤。

为达上述目的,本发明第四方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述访问权限控制方法的步骤。

为达上述目的,本发明第四方面实施例提出了一种计算机程序产品,当所述计算机程序产品中的指令由处理器执行时,实现上述访问权限控制方法的步骤。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明实施例所提供的一种访问权限控制方法的流程示意图;

图2为本发明实施例提供的另一种访问权限控制方法的流程示意图;

图3为tld文件部分代码示意图;

图4为过滤器所执行方法的流程示意图;

图5为本发明实施例提供的一种访问权限控制装置的结构示意图;

图6为本发明实施例所提供的另一种访问权限控制装置的结构示意图;以及

图7为计算机设备的框图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

下面参考附图描述本发明实施例的访问权限控制方法和装置。

图1为本发明实施例所提供的一种访问权限控制方法的流程示意图,本实施例所提供的方法,可以由后台服务器执行,如图1所示,访问权限控制方法包括以下步骤:

步骤101,当用户端请求访问页面时,提取所述页面中的控件元素。

具体地,该页面可以为java服务器页面(javaserverpages,jsp)也可以为超文本标记语言(hypertextmarkuplanguage,html)页面。

作为一种可能的实现方式,该页面为jsp页面,jsp是在html文件中插入java程序段和tag标签形成的一种页面。页面可以配置标签库(taglib)标签,另外,页面中的控件元素既可以包括头(head)和内容(body)体等,也可以包括tag标签。

因此,可以首先在web.xml引入tld文件,tld文件包括声明的统一资源定位符(uniformresourelocator,url),以及用于提取控件元素的java类路径。进而可以在待授权的页面中配置taglib标签,同时在页面body元素的里层增加相应的tag标签,以便对控件元素进行提取。其中,taglib标签可以通过指令:<%@taglib%>声明该页面使用了自定义的tag标签。在配置taglib标签时,taglib标签中需要配置一个url,该url应当与tld文件中声明的url一致。

在接收到用户端发送的用于访问页面的请求后,可以通过提取页面中具有tag标签的控件元素,以对tag标签所包住的body体进行解析得到控件元素的dom结构。其中,dom结构通常是一种树形结构,用于表征文档对象之间的结构关系。dom结构使得页面能够动态地变化,例如,可以显示或隐藏一个元素。

具体地,可以根据web.xml所引入的tld文件,识别tld文件中记载的url是否与taglib标签中的url一致。当tld文件中记载的url与taglib标签中的url一致时,读取tld文件中java类路径,并根据java类路径运行相应方法,通过该方法提取页面中具有tag标签的控件元素,以对tag标签内部的body体进行解析得到控件元素的dom结构。

步骤102,根据用户端的页面权限数据,对页面中的控件元素进行访问权限控制,以得到授权后的页面。

具体地,根据用户端的页面权限数据,修改页面中的控件元素的文档对象模型dom结构。具体来说,遍历页面中的控件元素。针对每一个所述控件元素,根据所述控件元素的标识,查询所述页面权限数据,以确定所述标识对应的权限;所述权限包括只读和/或隐藏。根据查询到的权限修改控件元素的dom结构。

具体来说:若查询到的权限为只读,在所述控件元素的dom结构中增加不可用属性;若查询到的权限为隐藏,删除所述控件元素的dom结构。

步骤103,向用户端发送授权后的页面。

具体地,向用户端发送的授权后的页面内,针对只读权限的控件元素,dom结构中包含有不可用属性,而隐藏权限的控件元素已完全不存在相应的dom结构,从而通过用户端是无法通过篡改权限恢复隐藏权限的控件元素的,提高了安全性。另外,由于授权是在后端服务器执行,前端用户端不具有页面权限数据,在一定程度上避免了由于对页面权限数据进行篡改导致的安全风险。

需要说明的是,本实施例应用于非jsp页面时,服务器中的过滤器在获取到页面的全部dom元素之后,可以通过修改dom元素修改页面权限。因此,本实施例所提供的方法,同样适用于html等非jsp页面。例如:针对html页面,由过滤器获取页面全部内容,使用本实施例中的方法进行页面权限过滤,将修改后的dom发送至前端用户端进行页面显示。

本实施例中,后台服务器接收用户端发送的用于访问页面的请求之后,提取页面中的控件元素,根据用户端的页面权限数据,对页面中的控件元素进行访问权限控制,以得到授权后的页面,向用户端发送授权后的页面。由于页面权限授权过程是在后台服务器完成的,发送至用户端的页面已经是授权后的页面,从而可以避免将页面权限数据暴露给用户端,解决了现有技术中页面元素容易泄露导致安全性较低的技术问题。

为了清楚说明上一实施例,本实施例提供了另一种访问权限控制方法,为了清楚说明图2为本发明实施例提供的另一种访问权限控制方法的流程示意图,如图2所示本实施中分别涉及前端用户端和后台服务器。

步骤201,服务器对页面进行配置。

具体地,本实施例中的页面具体为jsp页面,页面配置有taglib标签,同时,页面的控件元素中,增加相应的tag标签,以包住相应的body体。该页面内,需要进行页面授权的控件元素配置身份标识(identification,id)属性。

例如,taglib配置具体为:

<%@tagliburi="http://unieap.neusoft.com/techcomp/security"prefix="security"%>

又例如,tag标签配置具体为:

其中,<security:auth>和</security:auth>为tag标签,tag标签之间所包住的部分为body体。

步骤202,用户端访问页面发送请求,后台服务器的过滤器拦截所请求的页面。

具体地,后台服务器根据页面的taglib标签中的url,查询图3中tld文件,以确定taglib标签中的url与tld文件中的url(即图3中第一个框内部分)是否匹配,若匹配查询所需java类的路径(即图3中第二个框内部分),以执行相应方法,例如authoritytag类的doendtag方法,实现针对控件元素的提取。

步骤203,过滤器提取页面的全部控件元素,解析得到控件元素的dom结构。

其中,提取到的页面的全部控件元素,也就是页面实际显示的内容。

具体地,针对每一个控件元素来说,由于tag标签已经包住了body体,也就是控件元素的页面内容。为了清楚说明过滤器所执行的方法,图4为过滤器所执行方法的流程示意图,如图4所示,过滤器通过对tag标签包住的body体进行xml解析,得到该控件元素的dom结构。

步骤204,过滤器从缓存中获取用户端登录用户在当前页面下的页面权限数据。

具体地,过滤器遍历页面body元素中的控件元素,针对每一个所述控件元素,根据所述控件元素的id属性,查询所述页面权限数据,以确定所述标识对应的权限。其中,权限包括只读和/或隐藏。

步骤205,根据查询到的权限修改控件元素的dom结构。

具体地,若查询到的权限为只读,在所述控件元素的dom结构中增加不可用属性;若查询到的权限为隐藏,删除所述控件元素的dom结构。

步骤206,将经过修改后dom结构的页面发送至用户端进行显示。

本实施例中,接收用户端发送的用于访问页面的请求,提取页面中的控件元素,根据用户端的页面权限数据,对页面中的控件元素进行访问权限控制,以得到授权后的页面,向用户端发送授权后的页面。由于页面权限授权过程是在后台完成的,发送至用户端的页面已经是授权后的页面,从而可以避免将页面权限数据暴露给用户端,解决了现有技术中页面元素容易泄露导致安全性较低的技术问题。

为了实现上述实施例,本发明还提出一种访问权限控制装置。

图5为本发明实施例提供的一种访问权限控制装置的结构示意图。

如图5所示,该访问权限控制装置包括:提取模块31、控制模块32和发送模块33。

提取模块31,用于当用户端请求访问页面时,提取所述页面中的控件元素。

控制模块32,用于根据所述用户端的页面权限数据,对所述页面中的控件元素进行访问权限控制,以得到授权后的页面。

具体地,控制模块32具体用于根据所述用户端的页面权限数据,修改所述页面中的控件元素的文档对象模型dom结构。

发送模块33,用于向所述用户端发送所述授权后的页面。

需要说明的是,前述对方法实施例的解释说明也适用于该实施例的装置,此处不再赘述。

基于上述实施例,本发明实施例还提供了一种访问权限控制装置的可能的实现方式,图6为本发明实施例所提供的另一种访问权限控制装置的结构示意图,如图6所示,在上一实施例提供的图5的基础上,访问权限控制装置中的控制模块32,包括:查询单元321和修改单元322。

查询单元321,用于遍历所述页面中的控件元素;针对每一个所述控件元素,根据所述控件元素的标识,查询所述页面权限数据,以确定所述标识对应的权限。

其中,权限包括只读和/或隐藏。

修改单元322,用于根据查询到的权限修改所述控件元素的dom结构。

其中,修改单元322,具体用于:若查询到的权限为只读,在所述控件元素的dom结构中增加不可用属性;若查询到的权限为隐藏,删除所述控件元素的dom结构。

进一步,页面具有taglib标签,所述提取模块31,包括:识别单元311、读取单元312和提取单元313。

识别单元311,用于根据web.xml所引入的tld文件,识别所述tld文件中记载的url是否与所述taglib标签中的url一致。

读取单元312,用于当所述tld文件中记载的url与所述taglib标签中的url一致时,读取所述tld文件中java类路径。

提取单元313,用于采用所述java类路径下的方法,提取所述页面中具有tag标签的控件元素,以对所述tag标签内部的body体进行解析得到所述控件元素的dom结构。

本发明实施例中,通过接收用户端发送的用于访问页面的请求,提取页面中的控件元素,根据用户端的页面权限数据,对页面中的控件元素进行访问权限控制,以得到授权后的页面,向用户端发送授权后的页面。由于页面权限授权过程是在后台完成的,发送至用户端的页面已经是授权后的页面,从而可以避免将页面权限数据暴露给用户端,解决了现有技术中页面元素容易泄露导致安全性较低的技术问题。

为了实现上述实施例,本发明还提出一种计算机设备,包括:处理器,以及用于存储所述处理器可执行指令的存储器。

其中,处理器被配置为:

当用户端请求访问页面时,提取所述页面中的控件元素;

根据所述用户端的页面权限数据,对所述页面中的控件元素进行访问权限控制,以得到授权后的页面;

向所述用户端发送所述授权后的页面。

为了实现上述实施例,本发明还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如下访问权限控制方法:

当用户端请求访问页面时,提取所述页面中的控件元素;

根据所述用户端的页面权限数据,对所述页面中的控件元素进行访问权限控制,以得到授权后的页面;

向所述用户端发送所述授权后的页面。

为了实现上述实施例,本发明还提出一种计算机程序产品,当所述计算机程序产品中的指令由处理器执行时,执行如下访问权限控制方法:

当用户端请求访问页面时,提取所述页面中的控件元素;

根据所述用户端的页面权限数据,对所述页面中的控件元素进行访问权限控制,以得到授权后的页面;

向所述用户端发送所述授权后的页面。

图7示出了适于用来实现本申请实施方式的示例性计算机设备的框图。图7显示的计算机设备12仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图7所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(industrystandardarchitecture;以下简称:isa)总线,微通道体系结构(microchannelarchitecture;以下简称:mac)总线,增强型isa总线、视频电子标准协会(videoelectronicsstandardsassociation;以下简称:vesa)局域总线以及外围组件互连(peripheralcomponentinterconnection;以下简称:pci)总线。

计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(randomaccessmemory;以下简称:ram)50和/或高速缓存存储器52。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统54可以用于读写不可移动的、非易失性磁介质(图7未显示,通常称为“硬盘驱动器”)。尽管图7中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(compactdiscreadonlymemory;以下简称:cd-rom)、数字多功能只读光盘(digitalvideodiscreadonlymemory;以下简称:dvd-rom)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本申请所描述的实施例中的功能和/或方法。

计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(localareanetwork;以下简称:lan),广域网(wideareanetwork;以下简称:wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现前述实施例中提及的访问权限控制方法。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

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