2013-08-29 3 views
2

У меня есть услуги that're обеспечены лексемы, как в следующем примере: https://stackoverflow.com/a/10864088/278279Spring secutity и Multipart

Проблема заключается в том, когда я добавил загрузки файла, фильтр не может найти лексему запроса (я думаю, что причина в том, что просьба иметь многочастному типа)

Я использую CommonsMultipartResolver

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
    <property name="maxUploadSize" value="100000000"/> 
</bean> 

и простой контроллер пружинного получить файл @RequestParam("pic") MultipartFile pic

Для решения проблемы я модифицированная, маркер извлечения, если запрос имеет многослойный тип:

if(request.getContentType().contains("multipart/form-data")){ 
    List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest((HttpServletRequest) request); 
    for (FileItem item : items) { 
       if (item.isFormField() && item.getFieldName().equals("token")) { 
       return item.getString(); 
       } 
     } 
    } 

Наконец после того, как аутентификация модификации работает, но контроллер не MultipartFile посылая больше, поэтому он бросает исключение, не параметра в запросе. Как я могу решить эту проблему, чтобы иметь возможность получать файлы с аутентификацией токена?

ответ

1

Думаю, вам нужно добавить MultipartFilter. Как это сделать, зависит от того, какой стиль настройки вы используете. В нашем случае, мы добавили эти строки в нашем WebApplicationInitializer.onStartup() метод:

FilterRegistration.Dynamic multipartFilter = servletContext.addFilter("multipartFilter", new MultipartFilter()); 
    multipartFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), false, "/*"); 
+0

Вы можете прочитать о [CSRF и многоэлементных запросов] (http://docs.spring.io/spring-security/site/docs/ 3.2.x/ссылка/htmlsingle/# CSRF-multipartfilter). Обратите внимание, что я обнаружил, что нам пришлось добавить MultipartFilter ** после ** фильтра Spring Security, а не раньше в соответствии с документацией. – Bernie

Смежные вопросы