【问题标题】:Custom upload method dropzone and angularjs自定义上传方法 dropzone 和 angularjs
【发布时间】: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


【解决方案1】:

我今晚解决了这个问题。 在 dropzone 配置中,我可以传递标头,因此,我传递授权令牌,如下所示:

$scope.logoDropzoneConfig = {
                parallelUploads: 1,
                maxFileSize: 30,
                url: '/api/companies/upload/logo',
                headers: {
                    'Authorization' :AuthServerProvider.getToken()
                }
            };

很简单,不是吗?:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-21
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 2016-04-24
    • 2019-07-21
    相关资源
    最近更新 更多