5
如何使用基于JWT的身份验证处理文件下载?
我正在Angular中编写一个webapp,其中身份验证是通过JWT令牌处理的,这意味着每个请求都带有一个“ Authentication”标头,其中包含所有必要的信息。 这对于REST调用非常有效,但是我不明白如何处理后端托管的文件的下载链接(这些文件位于托管Web服务的同一服务器上)。 我不能使用常规<a href='...'/>链接,因为它们将不带有任何标题,并且身份验证将失败。同样的咒语window.open(...)。 我想到的一些解决方案: 在服务器上生成一个临时的不安全的下载链接 将身份验证信息作为url参数传递并手动处理情况 通过XHR获取数据并保存文件客户端。 以上所有都不令人满意。 1是我现在正在使用的解决方案。我不喜欢它有两个原因:首先,它不是理想的安全方式;其次,它可以工作,但是特别是在服务器上,它需要进行大量工作:要下载某些东西,我需要调用一个生成新的“随机”服务的服务网址,将其存储在某个位置(可能在数据库上)一段时间,然后将其返回给客户端。客户端获取url,并使用window.open或类似的名称。当请求时,新的url应该检查它是否仍然有效,然后返回数据。 2似乎至少要完成同样的工作。 3即使使用可用的库也似乎需要大量工作,并且存在许多潜在问题。(我需要提供自己的下载状态栏,将整个文件加载到内存中,然后要求用户将文件保存在本地)。 但是,该任务似乎是一项非常基本的任务,因此我想知道是否可以使用更简单的方法。 我不一定要寻找“角度方式”的解决方案。普通的Javascript就可以了。
116
javascript
angularjs
jwt