我正在使用REST后端实现AngularJS应用程序(使用Spring Boot)。

我目前可以下载这样的文件:

<td><a href="/api/datasheets/{{datasheet.id}}/documents/{{document.id}}/download" download>Download</a></td>

现在,我正在向应用程序添加安全性(使用Spring Security),现在这不再起作用。通过在每个请求的HTTP header 中添加x-auth-token来对AJAX调用进行身份验证。

但是,简单的href在类(class) header 中没有x-auth-token。我尝试在$http.get()上使用ng-click,但在that cannot not work上使用。

有没有简单的选择?

最佳答案

在用 Angular 实现文件下载时,我遇到了类似的问题。就我而言,我无法处理 Safari 中的Blob。我所做的是:创建一个处理程序,该处理程序返回一个有效的下载 token ,持续5秒钟。只有经过身份验证的用户才能获得此 token 。获得 token 后,调用另一个处理程序,该处理程序将在验证 token 后返回文件,并且该处理程序是可公开访问的。因此,您无需在下载文件时发送身份验证 header 。

我使用itsdangerous library实现了带时间戳的 token 。

10-05 20:47
查看更多