【发布时间】:2016-11-05 08:16:45
【问题描述】:
我正在编写应用程序(Java + Spring Boot,后端具有安全性),前端是 Angularjs。我需要使用共享令牌(安全目的)将文件发送到后端。我在后端启用了 csrf,并且在创建 http 请求时使用了 angular 拦截器。但它不适用于 ng-dropzone。
我添加了 dropzone 配置:
$scope.logoDropzoneConfig = {
parallelUploads: 1,
maxFileSize: 30,
url: '/api/companies/upload/logo',
};
但我有type=org.springframework.security.access.AccessDeniedException, message=Access is denied。
是否可以编写自定义方法来发送文件而不是配置中的url?
【问题讨论】:
-
您可以在使用 dropzone 上传时仅使用 spring-security 为 /api/companies/upload/logo 禁用 csrf 吗?
http.csrf().ignoringAntMatchers("/api/companies/upload/logo") -
@MGR 我的应用程序必须是安全的。我不想为任何服务禁用 csrf。这不是一个解决方案。
-
是的,我刚问过。我们可以谈论使用 REST 服务实现 CSRF 而不是表单提交,但这不是重点。您是如何在 AngularJS 应用程序中实现 CSRF 令牌的? (在元标记中?在 cookie 中?[+ 标题])
-
我在下面发布我的答案。
标签: java angularjs spring spring-security dropzone.js