После обновления Spring Security до версии 3.2.x функция загрузки файлов Ajax в моем приложении больше не работает. Основываясь на the SS 3.2 documentation, я добавляю $ {_ csrf.parameterName} = $ {_ csrf.token} URL-адрес ajax. Это не помогает. Кроме того, я также стараюсь, чтобы SS пост-метод устанавливался так же, как и последующие.Загрузка файла с помощью Ajax и Spring Secruity
var token = $("meta[name='_csrf']").attr("value");
var header = $("meta[name='_csrf_header']").attr("value");
//...
$(document).ready(function() {
new AjaxUpload('#uploadButton', {
action: "/shop/admin/products/images/upload",
name: 'uploadData',
beforeSend : function(xhr) {
xhr.setRequestHeader("Accept","application/json");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader(header, token);
},
onSubmit: function(file , ext) {
this.disable();
if (! (ext && /^(jpg|png|jpeg|gif|JPG|PNG|JPEG|GIF)$/.test(ext))){
alert('Error: invalid file extension');
return false; // cancel upload
}else {
// change button text, when user selects file
button.text(msg);
// If you want to allow uploading only 1 file at time,
// you can disable upload button
this.disable();
// Uploding -> Uploading. -> Uploading...
interval = window.setInterval(function(){
var text = button.text();
if (text.length < 13){
button.text(text + '.');
} else {
button.text(msg);
}
}, 200);
}
},
onComplete: function(file, response) {
button.text(msg);
window.clearInterval(interval);
this.enable();
}
});
});
И HTML код, связанный с:
<button id="uploadButton" type="button" class="btn btn-default" th:text="#{label.upload}"></button>
Другой вариант упоминается в документации SS является порядок конфигурации фильтра. Конфигурация Java в приложении не имеет конфигурации фильтра. Поэтому этот параметр не может быть применен.
Как справиться с этой проблемой?
Как вы размещаете файл в ajax, используете ли вы библиотеку? Какой API вы используете на стороне сервера, чтобы получить файл? – holmis83
Библиотека загрузки файлов Ajax была из http://valums.com/ajax-upload/. Этот сайт больше не выходит. В течение последних нескольких недель я пытался найти замену библиотеки загрузки файлов Ajax или подключаемого модуля JQuery, который хорошо работает с Spring Security 3.2, чтобы я мог избежать этой проблемы. – vic
Я успешно использую http://malsup.com/jquery/form/ вместе с Spring Security 3.2. – holmis83