使用基于令牌的API下载文件

时间:2017-04-01 21:12:45

标签: javascript php laravel vue.js token

我正在使用 Vue.js (前端)+ Laravel (后端)创建一个Web应用程序,我构建了整个应用程序以与后端进行通信通过api路线。请求使用令牌(Laravel中的护照)通过中间件进行身份验证。在某些时候我需要下载一些文件,但我不知道如何使它发生,因为我无法通过网络路由识别或验证用户。我可以通过ajax请求从API发送字节数据,但是很难让用户从javascript中下载文件(至少在每个浏览器上都很难工作)。

那么解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我们最近不得不解决这个问题。

首先我们通过ajax请求发送文件流,然后通过HTML5文件API下载文件,但是它导致了很多文件问题> 5MB。

我们最后实现的解决方案,听起来最好的是创建一个带有一些临时令牌的临时文件URL,以便下载该文件。到期时间为5分钟或任何适合您的需要。在您的API调用中,发送该新URL并在新选项卡或下载或您想要执行的任何其他操作中打开。

编辑: 我们使用Amazon s3进行存储,因此身份验证不是问题,但您需要对身份验证层进行更改,以允许临时URL访问而不使用令牌来访问临时文件处理控制器。