2013-08-31 62 views
1

Filepicker默認允許幾乎每個人都將文件添加到您的S3存儲誰是足夠聰明的API密鑰複製出來的客戶端代碼的,幸運的是還提供了即將到期的政策安全選項。正確啓用了filepicker.io安全流星

但我不知道如何實現這Meteor.js。來回測試,安裝meteor-crypto-base軟件包,試圖在服務器上生成哈希值,在https://github.com/RGBboy/urlsafe-base64上嘗試使用RGBboy的urlsafe-base64算法。但我只是沒有更進一步。也許有人可以幫忙!先謝謝你。

回答

2

這是如何做到filepicker簽署的網址流星,基於文檔here上的例子:

var crypto = Npm.require('crypto'); 
var FILEPICKER_KEY = 'Z3IYZSH2UJA7VN3QYFVSVCF7PI'; 
var BASE_URL = 'https://www.filepicker.io/api/file'; 

Meteor.methods({ 
    signedUrl: function(handle) { 
    var expiry = Math.floor(new Date().getTime()/1000 + 60 * 60); 

    var policy = new Buffer(JSON.stringify({ 
     handle: handle, 
     expiry: expiry 
    })).toString('base64'); 

    var signature = crypto 
     .createHmac('sha256', FILEPICKER_KEY) 
     .update(policy) 
     .digest('hex'); 

    return BASE_URL + "/" + handle + 
     "?signature=" + signature + "&policy=" + policy; 
    } 
}); 

注意這將需要在一些地方存在的server目錄裏面,所以你不發貨的客戶的鑰匙。爲了證明它的工作原理,在客戶端可以調用它像這樣:

Meteor.call('signedUrl', 'KW9EJhYtS6y48Whm2S6D', function(err, url){console.log(url)}); 

如果一切正常,你應該看到照片時您訪問返回的URL。

+0

謝謝你這麼多,你救了我的天! –