Я пытаюсь проверить функциональность загрузки с помощью руководства this, за исключением использования cfs-s3. Это очень простой пример с простым кодом, но я получаю сообщение об ошибке на клиентской консоли. Error: Access denied. No allow validators set on restricted collection for method 'insert'. [403]
Метеор: невозможно загрузить изображение на S3 с помощью CollectionFS
Я получаю эту ошибку, даже если я установил allow insert
всеми возможными способами.
Вот мой код клиента:
// client/images.js
var imageStore = new FS.Store.S3("images");
Images = new FS.Collection("images", {
stores: [imageStore],
filter: {
allow: {
contentTypes: ['image/*']
}
}
});
Images.deny({
insert: function(){
return false;
},
update: function(){
return false;
},
remove: function(){
return false;
},
download: function(){
return false;
}
});
Images.allow({
insert: function(){
return true;
},
update: function(){
return true;
},
remove: function(){
return true;
},
download: function(){
return true;
}
});
И есть простая кнопка ввода файла на главной странице -
// client/home.js
'change .myFileInput': function(e, t) {
FS.Utility.eachFile(e, function(file) {
Images.insert(file, function (err, fileObj) {
if (err){
console.log(err) // --- THIS is the error
} else {
// handle success depending what you need to do
console.log("fileObj id: " + fileObj._id)
//Meteor.users.update(userId, {$set: imagesURL});
}
});
});
}
Я установил соответствующие политики и все на S3, но я не» t думаю, что эта ошибка связана с S3 вообще.
// server/images.js
var imageStore = new FS.Store.S3("images", {
accessKeyId: "xxxx",
secretAccessKey: "xxxx",
bucket: "www.mybucket.com"
});
Images = new FS.Collection("images", {
stores: [imageStore],
filter: {
allow: {
contentTypes: ['image/*']
}
}
});
Я также опубликовал и подписался на коллекции соответствующим образом. Я копался часами, но не могу понять, что происходит.
EDIT: Я только что прочитал insecure
пакет и все, что теперь работает. Поэтому в основном проблема заключается в правилах allow/deny, но я на самом деле это делаю. Я не уверен, почему он не признает правила.
См. Также раздел wiki на странице [Безопасность] (https://github.com/CollectionFS/Meteor-CollectionFS/wiki/Security) для получения дополнительной информации о конфигурации CollectionFS Security –
Переместите свой код Images.allow() в сервер/images.js –