文件存储方法、装置、设备及计算机可读存储介质与流程

文档序号:24126434发布日期:2021-03-02 13:51阅读:96来源:国知局
文件存储方法、装置、设备及计算机可读存储介质与流程

[0001]
本申请涉及计算机存储技术,尤其涉及一种文件存储方法、装置、设备及计算机可读存储介质。


背景技术:

[0002]
云存储是一种新型的网络存储形式,并逐步为大家所接受,企业和个人用户都开始使用云存储作为其网络存储媒介。目前很多信息技术(information technology,it)企业都推出了云存储服务,其中简单存储服务(simple storage service,s3)就是商用云存储服务的典型代表。互联网场景下,文件的上传存储和访问一直有较大需求,而云对象存储可以较好地支持文件的大量存储。因此,云对象存储服务(如阿里云对象存储(object storage service,oss)、亚马逊云服务(amazon web services,aws)等)广受青睐。随着云对象存储的广泛使用,云对象存储中数据的安全问题(如数据泄漏等)也成了用户广泛关注的问题,但相关技术中,云对象存储方案并没有过多地考虑数据泄露问题和安全性问题。


技术实现要素:

[0003]
本申请实施例提供一种文件存储方法、装置及计算机可读存储介质,能够提供一个通用的文件存储接口,支持向至少一种云存储服务端存储文件,并能保证不同用户存储的内容互相隔离,从而可以减少数据泄露风险,提高存储的安全性。
[0004]
本申请实施例的技术方案是这样实现的:
[0005]
本申请实施例提供一种文件存储方法,包括:
[0006]
接收文件存储请求,所述文件存储请求中包括待存储文件和第一用户令牌;
[0007]
基于所述第一用户令牌,获取所述文件存储请求对应的用户信息;
[0008]
基于所述用户信息,生成所述待存储文件的存储键值;
[0009]
确定与所述文件存储请求对应的第一云存储服务端;
[0010]
基于所述存储键值,将所述待存储文件存储至第一云存储服务端。
[0011]
在一些实施例中,所述基于所述用户信息,生成所述待存储文件的存储键值,包括:为所述待存储文件生成文件标识;基于所述用户信息和所述文件标识,生成所述待存储文件的存储键值。
[0012]
在一些实施例中,所述基于所述第一用户令牌,获取所述文件存储请求对应的用户信息,包括:检测所述第一用户令牌是否过期;在检测到所述第一用户令牌未过期的情况下,通过解析所述第一用户令牌,得到所述文件存储请求对应的用户信息。
[0013]
在一些实施例中,所述第一云存储服务端支持简单存储服务协议,所述基于所述存储键值,将所述待存储文件存储至第一云存储服务端,包括:基于所述存储键值,按照简单存储服务协议,将所述待存储文件存储至所述第一云存储服务端。
[0014]
在一些实施例中,所述方法还包括:接收文件访问请求,所述文件访问请求包括第一待访问文件标识和第二用户令牌;基于所述第二用户令牌,获取所述文件访问请求对应
的用户信息;基于所述用户信息和所述待访问文件标识,生成待访问文件的存储键值;确定所述文件访问请求对应的第二云存储服务端;从第二云存储服务端获取与所述存储键值对应的待访问文件;返回所述待访问文件。
[0015]
在一些实施例中,所述方法还包括:接收文件统一资源定位系统(unifor-m resource locator,url)获取请求,所述文件url获取请求包括第二待访问文件标识和第三用户令牌;基于所述第三用户令牌,获取所述文件url获取请求对应的用户信息;基于所述用户信息和所述第二待访问文件标识,生成待访问文件的存储键值;确定所述文件访问请求对应的第三云存储服务端;基于所述存储键值,从第三云存储服务端获得所述待访问文件的文件url,所述文件url用于从所述第三云存储服务端获取所述待访问文件;返回所述文件ur-l。
[0016]
在一些实施例中,所述方法还包括:接收用户信息登录请求,所述用户信息登录请求包括待登录用户信息;基于所述待登录用户信息,进行登录验证;在登录验证通过的情况下,基于所述待登录用户信息,生成用户令牌;返回所述用户令牌。
[0017]
本申请实施例提供一种文件存储装置,包括:
[0018]
第一接收模块,用于接收文件存储请求,所述文件存储请求中包括待存储文件和第一用户令牌;
[0019]
第一获取模块,用于基于所述第一用户令牌,获取所述文件存储请求对应的用户信息;
[0020]
第一生成模块,用于基于所述用户信息,生成所述待存储文件的存储键值;
[0021]
第一确定模块,用于确定与所述文件存储请求对应的第一云存储服务端;
[0022]
存储模块,用于基于所述存储键值,将所述待存储文件存储至第一云存储服务端。
[0023]
在一些实施例中,在一些实施例中,所述第一生成模块还用于:为所述待存储文件生成文件标识;基于所述用户信息和所述文件标识,生成所述待存储文件的存储键值。
[0024]
在一些实施例中,所述第一获取模块还用于:检测所述第一用户令牌是否过期;在检测到所述第一用户令牌未过期的情况下,通过解析所述第一用户令牌,得到所述文件存储请求对应的用户信息。
[0025]
在一些实施例中,所述第一云存储服务端支持简单存储服务协议,所述存储模块还用于:基于所述存储键值,按照简单存储服务协议,将所述待存储文件存储至所述第一云存储服务端。
[0026]
在一些实施例中,所述装置还包括:第二接收模块,用于接收文件访问请求,所述文件访问请求包括第一待访问文件标识和第二用户令牌;第二获取模块,用于基于所述第二用户令牌,获取所述文件访问请求对应的用户信息;第二生成模块,用于基于所述用户信息和所述待访问文件标识,生成待访问文件的存储键值;第二确定模块,用于确定所述文件访问请求对应的第二云存储服务端;第三获取模块,用于从第二云存储服务端获取与所述存储键值对应的待访问文件;第一返回模块,用于返回所述待访问文件。
[0027]
在一些实施例中,所述装置还包括:第三接收模块,用于接收文件url获取请求,所述文件url获取请求包括第二待访问文件标识和第三用户令牌;第四获取模块,用于基于所述第三用户令牌,获取所述文件url获取请求对应的用户信息;第三生成模块,用于基于所述用户信息和所述第二待访问文件标识,生成待访问文件的存储键值;第三确定模块,用于
确定所述文件访问请求对应的第三云存储服务端;第五获取模块,用于基于所述存储键值,从第三云存储服务端获得所述待访问文件的文件url,所述文件url用于从所述第三云存储服务端获取所述待访问文件;第二返回模块,用于返回所述文件url。
[0028]
在一些实施例中,所述装置还包括:第四接收模块,用于接收用户信息登录请求,所述用户信息登录请求包括待登录用户信息;验证模块,用于基于所述待登录用户信息,进行登录验证;第四生成模块,用于在登录验证通过的情况下,基于所述待登录用户信息,生成用户令牌;第三返回模块,用于返回所述用户令牌。
[0029]
本申请实施例提供一种文件存储设备,包括:存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的方法。
[0030]
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的方法。
[0031]
本申请实施例具有以下有益效果:
[0032]
通过在接收到文件存储请求后,基于用户信息生成待存储文件的存储键值,将待存储文件存储至与文件存储请求对应的第一云存储服务端,这样,一方面可以提供一个通用的文件存储接口,能够支持向至少一种云存储服务端存储文件,另一方面,在进行文件存储时,在云存储服务端存储文件所用的键值是与用户信息相关的,可以保证不同用户存储的内容互相隔离,从而可以减少数据泄露风险,提高存储的安全性。此外,在接收到文件存储请求后,基于文件存储请求中携带的第一用户令牌获取用户信息,可以进行用户的合法性验证,从而可以进一步提高文件存储的安全性。
附图说明
[0033]
图1是本申请实施例提供的文件存储系统的一个可选的架构示意图;
[0034]
图2是本申请实施例提供的文件存储设备的一个可选的结构示意图;
[0035]
图3是本申请实施例提供的文件存储方法的一个可选的流程示意图;
[0036]
图4是本申请实施例提供的文件存储方法的一个可选的流程示意图;
[0037]
图5是本申请实施例提供的文件存储方法的一个可选的流程示意图;
[0038]
图6是本申请实施例提供的文件存储方法的一个可选的流程示意图;
[0039]
图7是本申请实施例提供的文件存储方法的一个可选的流程示意图;
[0040]
图8是本申请实施例提供的文件存储方法的一个可选的流程示意图。
具体实施方式
[0041]
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
[0042]
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
[0043]
如果申请文件中出现“第一/第二”的类似描述则增加以下的说明,在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,
可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
[0044]
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
[0045]
为了更好地理解本申请实施例提供的文件存储方法,下面先对相关技术中的文件存储方案进行说明。
[0046]
相关技术中的文件存储一般是借助于分布式文件系统进行的,比如谷歌文件系统(google file system,gfs)、hadoop分布式文件系统(hadoop distri-buted file system,hdfs)、lustre、ceph、gridfs、mogilefs、淘宝文件系统(taobao file system,tfs)、fastdfs等。不同的分布式文件系统各自适用于不同的领域,但都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。其中,hdfs由于具有高容错度、高扩展性、高吞吐量和高可靠性的特点,成为了业界和学术界最为流行的分布式文件存储系统。ceph是一个开源的分布存储系统,同时提供对象存储、块存储和文件存储,也是一种较为主流的分布式文件存储方案。
[0047]
相关技术中,还可以采用云对象存储服务oss、aws等进行文件存储。要将文件上传到oss或aws,需要开发人员手动调用oss或aws提供的基于s3协议的软件开发工具包(software development kit,sdk)进行s3客户端初始化、对象上传、密钥管理等操作,而相关技术中,不同的云对象存储服务的客户端初始化、对象上传、密钥管理等操作没有统一标准,且实现方式各异,对于开发人员的要求较高。随着云对象存储的广泛使用,云对象存储中数据的安全问题,如数据泄漏等也成了用户广泛关注的问题。在相关技术中,针对如何做好用户数据的隔离,防止数据泄露并没有较多考虑。通常用户只要拿到访问密钥(access key/secret key,ak/sk)信息和存储桶(bucket)信息,就能访问bucket里面的任意内容。
[0048]
可见,上述相关技术中的文件存储方案存在以下问题:1)hdfs、ceph等较为主流的分布式存储方案中未使用云存储;2)使用云对象存储服务进行文件存储时,开发和学习成本较高,且对文件大小的限制较多,不同大小的文件存储有完全不同的选型,没有一种通用的解决方案,因而运维成本也高,需要专门的运维人员配置和维护数据;3)没有较多的考虑数据泄露和安全性问题。
[0049]
本申请实施例提供一种文件存储方法、装置、设备和计算机可读存储介质,能够提供一个通用的文件存储接口,支持向至少一种云存储服务端存储文件,并能保证不同用户存储的内容互相隔离,从而可以减少数据泄露风险,提高存储的安全性。下面说明本申请实施例提供的文件存储设备的示例性应用,本申请实施例提供的文件存储设备可以实施为笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的用户终端,也可以实施为服务器。下面,将说明设备实施为服务器时的示例性应用。
[0050]
参见图1,图1是本申请实施例提供的文件存储系统100的一个可选的架构示意图,可以实现向至少一种云存储服务端存储文件,终端(示例性示出了终端400-1和终端400-2)通过网络300连接服务器200,网络300可以是广域网或者局域网,又或者是二者的组合。
[0051]
终端用于:在图形界面(示例性示出了图形界面410-1和图形界面410-2)显示用户
进行文件存储的交互界面,接收用户的文件存储操作,并将向服务器200发送文件存储请求。
[0052]
服务器200用于:接收文件存储请求,所述文件存储请求中包括待存储文件和第一用户令牌;基于所述第一用户令牌,获取所述文件存储请求对应的用户信息;基于所述用户信息,生成所述待存储文件的存储键值;确定与所述文件存储请求对应的第一云存储服务端500;基于所述存储键值,将所述待存储文件存储至第一云存储服务端500。
[0053]
在一些实施例中,服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。终端400可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本发明实施例中不做限制。
[0054]
参见图2,图2是本申请实施例提供的文件存储设备200的结构示意图,图2所示的文件存储设备200包括:至少一个处理器210、存储器250、至少一个网络接口220和用户接口230。文件存储设备200中的各个组件通过总线系统240耦合在一起。可理解,总线系统240用于实现这些组件之间的连接通信。总线系统240除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统240。
[0055]
处理器210可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(dsp,digital signal processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
[0056]
用户接口230包括使得能够呈现媒体内容的一个或多个输出装置231,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口230还包括一个或多个输入装置232,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
[0057]
存储器250可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器250可选地包括在物理位置上远离处理器210的一个或多个存储设备。
[0058]
存储器250包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(rom,read only me-mory),易失性存储器可以是随机存取存储器(ram,random access memor-y)。本申请实施例描述的存储器250旨在包括任意适合类型的存储器。
[0059]
在一些实施例中,存储器250能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
[0060]
操作系统251,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
[0061]
网络通信模块252,用于经由一个或多个(有线或无线)网络接口220到达其他计算设备,示例性的网络接口220包括:蓝牙、无线相容性认证(wifi)、和通用串行总线(usb,universal serial bus)等;
[0062]
呈现模块253,用于经由一个或多个与用户接口230相关联的输出装置231(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
[0063]
输入处理模块254,用于对一个或多个来自一个或多个输入装置232之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
[0064]
在一些实施例中,本申请实施例提供的文件存储装置可以采用软件方式实现,图2示出了存储在存储器250中的文件存储装置255,其可以是程序和插件等形式的软件,包括以下软件模块:第一接收模块2551、第一获取模块2552、第一生成模块2553、第一确定模块2554和存储模块2555,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。
[0065]
将在下文中说明各个模块的功能。
[0066]
在另一些实施例中,本申请实施例提供的文件存储装置可以采用硬件方式实现,作为示例,本申请实施例提供的文件存储装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的那件存储方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(asic,application specific integrated circuit)、dsp、可编程逻辑器件(pld,progra-mmable logic device)、复杂可编程逻辑器件(cpld,complex programmab-le logic device)、现场可编程门阵列(fpga,field-programmable gate arr-ay)或其他电子元件。
[0067]
下面将结合本申请实施例提供的终端或服务器的示例性应用和实施,说明本申请实施例提供的文件存储方法。
[0068]
参见图3,图3是本申请实施例提供的文件存储方法的一个可选的流程示意图,下面将结合图3示出的步骤进行说明,下述步骤的执行主体可以是前文的终端或服务器。
[0069]
在步骤s101中,接收文件存储请求,所述文件存储请求中包括待存储文件和第一用户令牌。
[0070]
这里,用户可以通过任意合适的方式向该终端或服务器发送文件存储请求,例如超文本传输协议(hyper text transfer protocol,http)请求方式或sdk接口调用方式等。例如,可以是用户通过前端页面发送的,也可以是用户通过浏览器发送的,还可以是用户通过用户端的后台应用发送的。
[0071]
待存储文件可以是云存储服务端支持的任意格式的文件,包括但不限于jp-eg/bmp/zip/doc/docx/rar/pdf等文件格式。
[0072]
第一用户令牌为用于进行用户身份鉴别的用户令牌(token),可以唯一标识一个用户。在实施时,第一用户令牌可以是与用户信息具有对应关系的信息,比如用户的访问密钥、标识等,也可以是采用特定的加密方式对用户信息进行加密后生成的信息等。在一些实施方式中,第一用户令牌可以是基于json网络令牌(json web token,jwt)的token。
[0073]
在步骤s102中,基于所述第一用户令牌,获取所述文件存储请求对应的用户信息。
[0074]
这里,用户信息可以包括但不限于用户名、用户标识、账号、邮箱、手机号等中的一种或多种。可以通过特定的第一用户令牌与用户信息之间的对应关系,确定文件存储请求对应的用户信息,也可以通过解析第一用户令牌,得到文件存储请求对应的用户信息。在实施时,本领域技术人员可以根据实际情况,采用合适的方式获取文件存储请求对应的用户
信息,这里并不限定。
[0075]
第一用户令牌可以是永久有效的,任意时刻都能用于进行用户信息的确定,也可以具有一定的时效性,仅在有效期内才能用于进行用户信息的确定。在获取用户信息之前,可以对第一用户令牌的时效性进行验证,仅在第一用户令牌有效时,才能获取到文件存储请求对应的用户信息。
[0076]
在步骤s103中,基于所述用户信息,生成所述待存储文件的存储键值。
[0077]
这里,待存储文件的存储键值为在云存储服务端存储该待存储文件时所用的键(key)。在实施时,可以将用户信息作为待存储文件的存储键值的一部分,或者通过特定的映射关系为不同的用户分配不同的存储键值,这里并不限定。
[0078]
在步骤s104中,确定与所述文件存储请求对应的第一云存储服务端。
[0079]
这里,第一云存储服务端为当前文件存储请求要使用的云存储服务端,可以包括但不限于oss服务端、aws服务端、ceph服务端等中的一种或多种。在实施时,可以在文件存储请求中携带特定的标识字段,来确定第一云存储服务端,也可以根据用户信息获取当前用户预先配置的第一云存储服务端,还可以采用默认的云存储服务端作为第一云存储服务端。
[0080]
在步骤s105中,基于所述存储键值,将所述待存储文件存储至第一云存储服务端。
[0081]
这里,第一云存储服务端可以提供用于进行文件存储的接口,可以是htt-p接口,也可以是sdk中提供的接口。当前终端或服务器可以通过该文件存储的接口,将存储键值作为键,将待存储文件存储至第一云存储服务端。
[0082]
在一些实施例中,所述第一云存储服务端支持s3协议,步骤s105可以包括:基于所述存储键值,按照s3协议,将所述待存储文件存储至所述第一云存储服务端。这里,可以按照s3协议,以存储键值作为键、以待存储文件作为值,生成基于s3协议的存储请求,通过向第一云存储服务端发送该存储请求,可以将待存储文件存储至第一云存储服务端;也可以通过调用第一云存储服务端提供的基于s3协议的sdk接口,以存储键值作为键,将待存储文件存储至第一云存储服务端。在实施时,本领域技术人员可以根据实际情况选择合适的方式存储待存储文件,这里并不限定。
[0083]
本申请实施例中,通过在接收到文件存储请求后,基于用户信息生成待存储文件的存储键值,将待存储文件存储至与文件存储请求对应的第一云存储服务端,这样,一方面可以提供一个通用的文件存储接口,能够支持向至少一种云存储服务端存储文件,另一方面,在进行文件存储时,在云存储服务端存储文件所用的键值是与用户信息相关的,可以保证不同用户存储的内容互相隔离,从而可以减少数据泄露风险,提高存储的安全性。此外,在接收到文件存储请求后,基于文件存储请求中携带的第一用户令牌获取用户信息,可以进行用户的合法性验证,从而可以进一步提高文件存储的安全性。
[0084]
进一步地,可以按照s3协议,将待存储文件存储至第一云存储服务端,由于s3协议具备良好的通用性,且能够支持各种文件大小的存储访问,从而可以提高文件存储的通用性。
[0085]
在一些实施例中,参见图4,图4是本申请实施例提供的文件存储方法的一个可选的流程示意图,基于图3,步骤s103可以通过步骤s401至步骤s402实现,下面将结合各步骤进行说明,下述步骤的执行主体可以是前文的终端或服务器。
[0086]
步骤s401中,为所述待存储文件生成文件标识。
[0087]
这里,文件标识为待存储文件在当前用户存储的文件中的唯一标识,可以是与待存储文件本身的信息无关的唯一字符串或数字,如随机生成的一个唯一字符串、自动增长的唯一索引号等,也可以是与待存储文件本身的信息相关的信息,如包含待存储文件的文件名和当前时间戳的字符串、待存储文件的文件内容的哈希值等。在实施时,本领域技术人员可以根据实际需要选择合适的文件标识以及生成文件标识的方法,本申请实施例不做限定。
[0088]
步骤s402中,基于所述用户信息和所述文件标识,生成所述待存储文件的存储键值。
[0089]
这里,可以通过特定的组合策略,将用户信息和文件标识进行组合,生成待存储文件的存储键值,例如,将用户信息和文件标识进行简单拼接,或者将用户信息插入文件标识中的特定位置等。也利用用户信息作为签名密钥,对文件标识进行数字签名,将生成的数字签名信息作为待存储文件的存储键值。在实施时,本领域技术人员可以根据实际情况采用合适的方式生成待存储文件的存储键值,本申请实施例不做限定。
[0090]
本申请实施例中,基于用户信息和文件标识,生成待存储文件的存储键值,这样,可以简单快捷地生成待存储文件的存储键值,且通过用户信息和文件标识共同生成待存储文件的存储键值,也可以有效地提高存储键值的获取难度,降低存储键值的泄露风险,从而降低文件泄露的风险,提高文件存储的安全性。
[0091]
在一些实施例中,参见图5,图5是本申请实施例提供的文件存储方法的一个可选的流程示意图,图3示出的步骤s102可以通过步骤s501至步骤s502实现,下面将结合各步骤进行说明,下述步骤的执行主体可以是前文的终端或服务器。
[0092]
步骤s501中,检测所述第一用户令牌是否过期。
[0093]
这里,为了提高数据存储的安全性,可以根据实际需要为第一用户令牌设定相应的有效时长,例如3天、7天、一个月等。在实施时,有效时长可以是用户配置的,也可以是默认值,这里并不限定。不同的第一用户令牌可以具有相同的有效时长、也可以具有不同的有效时长。
[0094]
在检测第一用户令牌是否过期时,可以在第一用户令牌中携带令牌生效时间,根据该生效时间、当前时间以及有效时长,可以确定当前令牌是否过期;也可以在生成第一用户令牌时确定该令牌的失效时间,并在该第一用户令牌中携带该失效时间,通过解析第一用户令牌,可以获得该失效时间,若当前还未到达失效时间,则第一用户令牌未过期,若当前已到达失效时间,则第一用户令牌已过期。
[0095]
步骤s502中,在检测到所述第一用户令牌未过期的情况下,通过解析所述第一用户令牌,得到所述文件存储请求对应的用户信息。
[0096]
这里,用户信息可以是第一用户令牌中的特定字段,这样,可以通过直接提取第一用户令牌中的该特定字段获得用户信息。用户信息也可以是通过加密的方式携带在第一用户令牌中,可以通过对第一用户令牌进行解密后得到用户信息。在实施时,本领域技术人员可以根据实际情况采用合适的方式在第一用户令牌中携带用户信息,并通过合适的方式解析第一用户令牌得到用户信息,这里不做限定。在一些实施方式中,第一用户令牌可以是基于jwt协议的tok-en,可以基于jwt协议对第一用户令牌进行解析,得到文件存储请求对应
的用户信息。
[0097]
本申请实施例中,在检测到第一用户令牌未过期的情况下,通过解析第一用户令牌,得到文件存储请求对应的用户信息,这样,由于第一用户令牌具有时效性,可以有效降低数据泄露的风险,从而可以进一步提高存储的安全性。
[0098]
在一些实施例中,参见图6,图6是本申请实施例提供的文件存储方法的一个可选的流程示意图,基于图3,该方法还可以执行如下步骤s601至步骤s606实现,下面将结合各步骤进行说明,下述步骤的执行主体可以是前文的终端或服务器。
[0099]
步骤s601中,接收文件访问请求,所述文件访问请求包括第一待访问文件标识和第二用户令牌。
[0100]
这里,用户可以通过任意合适的方式向该终端或服务器发送文件访问请求,例如http请求方式或sdk接口调用方式等。例如,可以是用户通过前端页面发送的,也可以是用户通过浏览器发送的,还可以是用户通过用户端的后台应用发送的。
[0101]
第一待访问文件标识为该文件访问请求要访问的文件的标识,第二用户令牌为用于进行用户身份鉴别的用户令牌。
[0102]
步骤s602中,基于所述第二用户令牌,获取所述文件访问请求对应的用户信息。
[0103]
步骤s603中,基于所述用户信息和所述待访问文件标识,生成待访问文件的存储键值。
[0104]
步骤s604中,确定所述文件访问请求对应的第二云存储服务端。
[0105]
这里,步骤s602、步骤s604分别与前述步骤s102、步骤s104对应,在实施时,可以参照前述步骤s102、步骤s104的具体实施方式。步骤s603与前述步骤s402对应,在实施时,可以参照前述步骤s402的具体实施方式。
[0106]
步骤s605中,从第二云存储服务端获取与所述存储键值对应的待访问文件。
[0107]
这里,第二云存储服务端可以提供用于进行文件访问的接口,可以是htt-p接口,也可以是sdk中提供的接口。当前终端或服务器可以通过该文件访问的接口,获取与存储键值对应的待访问文件。
[0108]
在一些实施例中,所述第二云存储服务端支持s3协议,步骤s605可以包括:按照s3协议,从第二云存储服务端获取与所述存储键值对应的待访问文件。
[0109]
步骤s606中,返回所述待访问文件。
[0110]
需要说明的是,上述步骤s601至s606不限于如图6所示的执行顺序,例如,还可以在步骤s101之前执行步骤s601至步骤s606。
[0111]
本申请实施例中,通过在接收到文件访问请求后,基于第二用户令牌获取文件访问请求对应的用户信息,基于用户信息和文件访问请求中携带的待访问文件标识,生成待访问文件的存储键值,从与文件存储请求对应的第二云存储服务端获取与存储键值对应的待访问文件,并返回该文件。这样,一方面可以提供一个通用的文件访问接口,能够支持从至少一种云存储服务端访问文件;另一方面,在进行文件访问时,在云存储服务端访问文件所用的键值是与用户信息相关的,可以保证用户只能访问自己存储的文件,而无法访问其他用户存储的文件,从而可以减少数据泄露风险,提高文件存储和访问的安全性。此外,在接收到文件访问请求后,基于文件访问请求中携带的第二用户令牌获取用户信息,可以进行用户的合法性验证,从而可以进一步提高文件访问的安全性。
[0112]
在一些实施例中,参见图7,图7是本申请实施例提供的文件存储方法的一个可选的流程示意图,基于图3,该方法还可以执行如下步骤s701至步骤s706,下面将结合各步骤进行说明,下述步骤的执行主体可以是前文的终端或服务器。
[0113]
步骤s701中,接收文件url获取请求,所述文件url获取请求包括第二待访问文件标识和第三用户令牌。
[0114]
这里,文件url获取请求为获取访问文件的url的请求,用户可以通过任意合适的方式向该终端或服务器发送文件url获取请求,例如http请求方式或sdk接口调用方式等。例如,可以是用户通过前端页面发送的,也可以是用户通过浏览器发送的,还可以是用户通过用户端的后台应用发送的。
[0115]
第二待访问文件标识为该文件url获取请求要获取的url所要访问的文件的标识,第三用户令牌为用于进行用户身份鉴别的用户令牌。
[0116]
步骤s702中,基于所述第三用户令牌,获取所述文件url获取请求对应的用户信息;
[0117]
步骤s703中,基于所述用户信息和所述第二待访问文件标识,生成待访问文件的存储键值;
[0118]
步骤s704中,确定所述文件访问请求对应的第三云存储服务端;
[0119]
这里,步骤s702至步骤s704分别与前述步骤s602至步骤s604对应,在实施时,可以参照前述步骤s602至步骤s604的具体实施方式。
[0120]
步骤s705中,基于所述存储键值,从第三云存储服务端获得所述待访问文件的文件url,所述文件url用于从所述第三云存储服务端获取所述待访问文件。
[0121]
这里,第三云存储服务端可以提供用于获取访问文件的url的接口,可以是http接口,也可以是sdk中提供的接口。当前终端或服务器可以通过该接口,获取与存储键值对应的待访问文件的文件url。该文件url具有时效性,任意用户可以在该文件url的有效期内直接从第三云存储服务端获取该待访问文件。
[0122]
在一些实施例中,所述第三云存储服务端支持s3协议,步骤s705可以包括:基于所述存储键值,按照s3协议,从第三云存储服务端获得所述待访问文件的文件url,所述文件url用于从所述第三云存储服务端获取所述待访问文件。
[0123]
步骤s706中,返回所述文件url。
[0124]
需要说明的是,上述步骤s701至s706不限于如图7所示的执行顺序,例如,还可以在步骤s101之前执行步骤s701至步骤s706。
[0125]
本申请实施例中,终端或服务器在接收到文件url获取请求后,基于第三用户令牌获取文件url获取请求对应的用户信息,基于用户信息和文件url获取请求中携带的待访问文件标识,生成待访问文件的存储键值,从与文件存储请求对应的第三云存储服务端获取与存储键值对应的待访问文件的文件ur-l,并返回该文件url。这样,一方面可以提供一个通用的文件url获取接口,能够支持从至少一种云存储服务端获取文件url,从而用户可以通过文件ur-l从云存储服务端直接访问存储的文件;另一方面,在进行文件url获取时,在云存储服务端获取文件url所用的键值是与用户信息相关的,可以保证用户只能获取自己存储的文件的url,从而可以减少数据泄露风险,提高文件存储和访问的安全性。此外,在接收到文件url获取请求后,基于文件url获取请求中携带的第三用户令牌获取用户信息,可
以进行用户的合法性验证,从而可以进一步提高文件访问的安全性。
[0126]
在一些实施例中,参见图8,图8是本申请实施例提供的文件存储方法的一个可选的流程示意图,基于图3,该方法还可以执行如下步骤s801至步骤s804,下面将结合各步骤进行说明,下述步骤的执行主体可以是前文的终端或服务器。
[0127]
步骤s801中,接收用户信息登录请求,所述用户信息登录请求包括待登录用户信息。
[0128]
这里,用户可以通过任意合适的方式向该终端或服务器发送用户信息登录请求,例如http请求方式或sdk接口调用方式等。例如,可以是用户通过前端页面发送的,也可以是用户通过浏览器发送的,还可以是用户通过用户端的后台应用发送的。
[0129]
待登录信息可以包括但不限于用户名、用户账号、密码、手机号、邮箱等中的一种或多种。
[0130]
步骤s802中,基于所述待登录用户信息,进行登录验证。
[0131]
这里,待登录用户信息可以是预先注册好的用户的登录信息,基于待登录信息可以验证当前用户是否有登录权限。
[0132]
步骤s803中,在登录验证通过的情况下,基于所述待登录用户信息,生成用户令牌。
[0133]
这里,可以采用任意合适的方式,基于待登录用户信息,为当前用户生成用户令牌,本申请实施例并不限定。
[0134]
步骤s804中,返回所述用户令牌。
[0135]
需要说明的是,上述步骤s801至s804不限于如图8所示的执行顺序,例如,还可以在步骤s101之前执行步骤s801至步骤s804。
[0136]
本申请实施例中,终端或服务器可以在接收到用户信息登录请求后,在登录验证通过的情况下,生成并返回用户令牌。这样,在用户令牌过期或泄露后,用户可以通过向终端或服务器发送用户信息登录请求,简单快速地获得新的用户令牌,从而进一步提高用户使用的便捷性和数据存储的安全性。
[0137]
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。以基于s3协议的文件存储为例,本申请实施例提供一种基于s3协议的通用文件存储访问模型,可以应用于服务端,能够支持基于s3协议的文件上传和文件下载服务。文件上传时,用户通过http post请求访问该服务端,服务端存储文件到oss或者aws等云存储服务端,并返回一个可以访问到该文件的url或文件标识(identity,id)。同时,可以提供基于url和基于文件id的两种文件访问形式,其中基于url的文件访问具有超时禁用机制,基于文件id的文件访问永久有效。基于文件id的文件访问提供了多用户访问控制支持,多个用户可以共享同一个云对象存储服务账号,能够同时保证各用户存储的内容互相隔离,禁止一个用户非授权访问其他用户存储的文件。
[0138]
该模型支持多种云存储服务端,可以包括任意支持s3协议的云存储服务端,例如主流的oss、aws、ceph等,可以通过简单的配置进行不同云存储服务端的切换。例如,用户可以在文件存储请求或文件访问请求中携带要标识云存储服务端的字段,根据该字段可以确定要使用的云存储服务端的配置文件,通过配置文件访问该云存储服务端。该模型可以支持常见的所有文件格式,包括jp-eg/bmp/zip/doc/docx/rar/pdf等文件格式。此外,s3协议
具备良好的通用性,能够支持各种文件大小的存储访问,较为通用。
[0139]
基于上述文件存储访问模型,本申请实施例提供一种文件存储访问方法,该方法包括如下功能模块:用户信息验证与用户数据隔离、文件上传、文件下载。下面分别对各功能模块进行具体说明。
[0140]
1)用户信息验证与用户数据隔离:
[0141]
用户上传文件前需要进行用户信息验证,包括用户信息注册和用户信息登录两步。
[0142]
用户信息注册可以通过交互界面完成,也可以通过调用注册接口实现。例如,通过交互界面完成时,可以在用户端的用户信息注册界面中依次点击通用、云端、注册接口按钮,通过填写用户名、邮箱等用户信息进行注册。通过调用注册接口实现用户信息注册时,用户可以在调用注册接口时携带用户名、邮箱等用户信息作为接口参数。用户信息注册成功后,可以在服务端存储注册用户的用户名、密码等信息。
[0143]
用户信息登录可以通过交互界面完成,也可以通过调用登录接口实现。例如,通过交互界面完成时,用户可以在用户端的用户信息登录界面中依次点击通用、云端、登录接口按钮,通过填写用户名、邮箱或密码等用户信息进行登录。通过调用登录接口实现用户信息登录时,用户可以在调用登录接口时携带用户名、邮箱或密码等用户信息作为接口参数。用户信息登录成功后,服务端会向用户返回一个token,token的有效期为7天,可以是基于jwt的token。需要用户在进行文件上传和下载时,需要在文件上传请求或文件下载请求中携带该token。例如,可以在http请求的请求头中携带该token。token到期后,用户携带过期的token访问服务端时,服务端会返回token过期的提示信息,用户接收到该提示信息后,可以重新进行用户登录,获取新的token。
[0144]
用户数据隔离主要应用在基于文件id的文件下载方式中。在基于文件id进行文件下载时,服务端提供了多用户访问控制。多个用户可以共享同一个云存储服务端账号,同时可以保证各用户存储的内容互相隔离,禁止一个用户非授权访问其他用户存储的文件。用户数据隔离主要通过文件上传请求或文件访问请求中携带的token进行用户合法性验证来完成。服务端在文件上传时会通过解析文件上传请求中携带的token获取用户信息,同时将用户信息作为文件在云端存储所用key的一部分,如/fileserver/abc/2018514/1-1320512897.jpg,其中abc为用户信息。文件存储成功后,返回给用户的文件id为/fileserver/20185-14/1-1320512897.jpg,不包含用户信息。这样,其他用户即使拿到其他的合法token,服务端解析该token得到其他用户信息,如abc1,这样,在云存储服务端会去查找/fileserver/abc1/2018514/1-1320512897.jpg,从而无法访问到用户abc存储的文件。因此,用户无法下载不是自己上传的文件,除非用户获得该文件所述用户的合法token。该用户数据隔离方式,不需要预先为每个用户划分存储空间,用户信息可以动态确定的,更加灵活,并且资源利用率更高。
[0145]
2)文件上传:
[0146]
这里,文件上传即文件存储,服务端采用云存储服务端提供的基于s3协议的sdk访问各个云存储服务端,实现文件的上传和读取。文件上传需要验证用户合法性,用户端在进行文件上传时,需要在请求头中加入用于进行身份验证的token,服务端解析文件上传请求所用的token,获取用户信息。服务端存储文件的文件夹在云存储服务端按照“用户/日期/
文件名-时间戳”的形式命名,例如,用户abc存储的文件名为1的jpg文件可以按照路径/fileserver/abc/20185-14/1-1320512897.jpg进行保存,其中,fileserver可以是用户在云存储服务端的存储桶,2018514为当前日期,1320512897为时间戳。文件上传时可以给文件名加一个时间戳,时间戳的时间可以精确到纳秒,以避免同名文件覆盖。
[0147]
为保证服务能够快速响应客户端请求,服务端在收到文件上传请求后,可以立即返回给客户端一个文件id,该文件id可以作为用户后续请求下载该文件的参数,该文件id永久有效。服务端后台负责真正将文件上传到与该文件上传请求对应的云存储服务端,同时还可以进行失败重传,以保证文件存储的可靠性。此外,在当前云存储服务端的内存使用率达到一定阈值时,还可以对数据存储请求进行限流,以实现对云存储服务端的过载保护。
[0148]
3)文件下载:
[0149]
文件下载可以采用基于文件id的文件下载方式或者基于url的文件下载方式。
[0150]
基于文件id的进行文件下载的情况下,用户可以根据文件上传返回的文件id去服务端获取文件。基于文件id的文件下载需要验证用户合法性,用户需要在请求头中加入合法的token才可下载文件。服务端解析文件下载时所用的t-oken,获取用户信息。由于用户信息隐藏包含在获取文件的key中,因此用户只能下载自己上传的文件。
[0151]
基于url的进行文件下载时,用户可以根据文件上传返回的文件id,从服务端获得一个可以下载该文件的url。服务端可以根据用户发送的文件id,确定该文件在云存储服务端中存储所用的key,基于该key,调用该云存储服务端提供的基于s3协议的url生成接口,生成一个具有一定时效的url。任意用户都可以在该url的有效期内,通过该url直接访问相应的云存储服务端,下载该文件,不需要验证用户合法性。
[0152]
本申请实施例具有如下有益效果:
[0153]
1)提出一种基于s3协议的通用文件存储访问模型,可以支持包括aws/oss等多种云存储服务端,针对不同云存储服务端的使用,可通过简单配置进行切换;
[0154]
2)在安全性改进方面,提出了不同用户的数据隔离、服务端的过载保护;
[0155]
3)在存储优化和通用化方面,支持包括aws/oss等多种云存储方案,支持常用文件格式,支持url/id两种下载方式;
[0156]
4)基于s3协议的云存储服务实行按需计费,用户不需要花费大量资金购买硬件基础设施,也不需要支出人力和部件成本来配置和维护数据。
[0157]
下面继续说明本申请实施例提供的文件存储装置255的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器250的文件存储装置255中的软件模块可以包括:
[0158]
第一接收模块2551,用于接收文件存储请求,所述文件存储请求中包括待存储文件和第一用户令牌;
[0159]
第一获取模块2552,用于基于所述第一用户令牌,获取所述文件存储请求对应的用户信息;
[0160]
第一生成模块2553,用于基于所述用户信息,生成所述待存储文件的存储键值;
[0161]
第一确定模块2554,用于确定与所述文件存储请求对应的第一云存储服务端;
[0162]
存储模块2555,用于基于所述存储键值,将所述待存储文件存储至第一云存储服务端。
[0163]
在一些实施例中,所述第一生成模块还用于:为所述待存储文件生成文件标识;基于所述用户信息和所述文件标识,生成所述待存储文件的存储键值。
[0164]
在一些实施例中,所述第一获取模块还用于:检测所述第一用户令牌是否过期;在检测到所述第一用户令牌未过期的情况下,通过解析所述第一用户令牌,得到所述文件存储请求对应的用户信息。
[0165]
在一些实施例中,所述第一云存储服务端支持简单存储服务协议,所述存储模块还用于:基于所述存储键值,按照简单存储服务协议,将所述待存储文件存储至所述第一云存储服务端。
[0166]
在一些实施例中,所述装置还包括:第二接收模块,用于接收文件访问请求,所述文件访问请求包括第一待访问文件标识和第二用户令牌;第二获取模块,用于基于所述第二用户令牌,获取所述文件访问请求对应的用户信息;第二生成模块,用于基于所述用户信息和所述待访问文件标识,生成待访问文件的存储键值;第二确定模块,用于确定所述文件访问请求对应的第二云存储服务端;第三获取模块,用于从第二云存储服务端获取与所述存储键值对应的待访问文件;第一返回模块,用于返回所述待访问文件。
[0167]
在一些实施例中,所述装置还包括:第三接收模块,用于接收文件url获取请求,所述文件url获取请求包括第二待访问文件标识和第三用户令牌;第四获取模块,用于基于所述第三用户令牌,获取所述文件url获取请求对应的用户信息;第三生成模块,用于基于所述用户信息和所述第二待访问文件标识,生成待访问文件的存储键值;第三确定模块,用于确定所述文件访问请求对应的第三云存储服务端;第五获取模块,用于基于所述存储键值,从第三云存储服务端获得所述待访问文件的文件url,所述文件url用于从所述第三云存储服务端获取所述待访问文件;第二返回模块,用于返回所述文件url。
[0168]
在一些实施例中,所述装置还包括:第四接收模块,用于接收用户信息登录请求,所述用户信息登录请求包括待登录用户信息;验证模块,用于基于所述待登录用户信息,进行登录验证;第四生成模块,用于在登录验证通过的情况下,基于所述待登录用户信息,生成用户令牌;第三返回模块,用于返回所述用户令牌。
[0169]
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的文件存储方法。
[0170]
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的文件存储方法,例如,如图3示出的方法。
[0171]
在一些实施例中,计算机可读存储介质可以是fram、rom、prom、ep-rom、eeprom、闪存、磁表面存储器、光盘、或cd-rom等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
[0172]
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
[0173]
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(h-tml,hyper text markup language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
[0174]
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
[0175]
综上所述,通过本申请实施例能够提供一个通用的文件存储接口,支持向至少一种云存储服务端存储文件,并能保证不同用户存储的内容互相隔离,从而可以减少数据泄露风险,提高存储的安全性。
[0176]
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1