相关疑难解决方法(0)

如何使用基于JWT的身份验证处理文件下载?

我正在Angular中编写一个webapp,其中身份验证由JWT令牌处理,这意味着每个请求都有一个带有所有必要信息的"身份验证"标头.

这适用于REST调用,但我不明白我应该如何处理后端托管的文件的下载链接(这些文件驻留在托管webservices的同一服务器上).

我不能使用常规<a href='...'/>链接,因为它们不会携带任何标头,验证将失败.同样的各种咒语window.open(...).

我想到的一些解决方案:

  1. 在服务器上生成临时不安全的下载链接
  2. 将身份验证信息作为url参数传递并手动处理案例
  3. 通过XHR获取数据并保存文件客户端.

以上所有都不太令人满意.

1是我现在使用的解决方案.我不喜欢它有两个原因:首先它不是理想的安全性,其次它可以工作,但它需要相当多的工作,特别是在服务器上:下载一些我需要调用一个生成一个新"随机"的服务"url,将它存储在某个地方(可能在数据库上)一段时间,并将其返回给客户端.客户端获取URL,并使用window.open或类似的.请求时,新URL应检查它是否仍然有效,然后返回数据.

2似乎至少同样多的工作.

3看起来很多工作,甚至使用可用的库,以及许多潜在的问题.(我需要提供自己的下载状态栏,将整个文件加载到内存中,然后要求用户在本地保存文件).

这个任务似乎是一个非常基本的任务,所以我想知道是否有更简单的东西我可以使用.

我不一定在寻找"Angular方式"的解决方案.常规Javascript会没事的.

javascript jwt angularjs

95
推荐指数
6
解决办法
2万
查看次数

https带有令牌参数的URL:它有多安全?

在我们的网站上,我们根据用户的私人信息(通过表格提供)向用户提供模拟.我们希望以后允许他们重新使用他们的模拟结果,但不要强迫他们创建登录/密码帐户.

我们曾想过给他们发送一封带有链接的电子邮件,他们可以从中获取结果.但是,当然,我们必须保护此URL,因为私有数据受到威胁.

因此,我们打算在URL中传递令牌(如字母和数字的40个字符组合,或MD5哈希)并使用SSL.

最后,他们会收到这样的电子邮件:

您好,
请在https://www.example.com/load_simulation?token=uZVTLBCWcw33RIhvnbxTKxTxM2rKJ7YJrwyUXhXn上取回您的搜索结果

你怎么看待这件事?它足够安全吗?你会为我的令牌生成提出什么建议?如何在https请求中传递URL参数?

security url https token

77
推荐指数
2
解决办法
7万
查看次数

如何设置HTTP GET请求的标头,并触发文件下载?

更新 20140702:

(但我将其他一个答案标记为接受而不是我自己的答案,因为它让我在那里一半,并奖励努力)


似乎无法通过链接设置HTTP请求标头<a href="...">,并且只能使用XMLHttpRequest.

但是,链接到的URL是应该下载的文件(浏览器不应该导航到它的URL),我不确定这是否可以使用AJAX完成.

此外,返回的文件是二进制文件,而AJAX不适用于此.

如何使用添加了自定义标头的HTTP请求触发文件下载?

编辑:修复损坏的链接

javascript ajax download http-headers

53
推荐指数
5
解决办法
9万
查看次数

标签 统计

javascript ×2

ajax ×1

angularjs ×1

download ×1

http-headers ×1

https ×1

jwt ×1

security ×1

token ×1

url ×1