我正在使用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 。