2013-07-05 80 views
1

你能幫我做一個連接持久化腳本嗎?我用jsftp節點模塊連接到ftp服務器。我需要做的是檢查用戶每次發送請求時是否已經通過身份驗證。提前致謝!這裏是我的代碼:做這樣的東西可能是一個政策,因爲你希望能夠爲您打造出你的應用程序來檢查適用於各種控制器如何在nodejs中保持持久的ftp連接

var Ftp = require('jsftp'); 

var dumpLog = function (event){ 
     console.log('Code: '+ event.code); 
     console.log('Message: '+ event.text); 
} 

var FtpController = { 

    index : function (req , res) { 
     res.view('ftp/login'); 
    }, 

    auth : function (req , res){ 

     // Initialize some common variables 
     var user = req.param('user'); 
     var pass = req.param('pass'); 

     var ftp = new Ftp({ 
      host: req.param('host'), 
      port: req.param('port') // Defaults to 21 
     }); 

     ftp.auth(user, pass, function (err , auth_res){ 
      if (err) throw err; 

      dumpLog(auth_res); 
     }); 

     res.view('ftp/folder'); 
    }, 

    serve_folder : function(req,res){ 
     res.view('ftp/folder'); 
    }, 

}; 
module.exports = FtpController; 
+0

您需要使用會話來了解用戶登錄/成功通過身份驗證。從未使用過sailsjs,你在sailsjs中有類似的東西嗎? – user568109

+0

@ user568109是的sailsjs有會話。 :)我正在玩它。 – bwaaaaaa

回答

0

的最佳方式。以下是您的政策的外觀:

// policies/ftpAuthenticated.js 
module.exports = function loginToFTP (req, res, next) { 
    if (req.session.ftpAuthenticated) { 
    // Onward! 
    next(); 
    } 
    else { 
    // authenticate here (we assume it works in this example) 
    var success = true; 
    if (success) { 
     // Track that the user is connected via ftp for next time 
     req.session.ftpAuthenticated = true; 
     // save the connection object 
     req.session.ftp = theFTPConnectionThing; 
     next(); 
    } 

    // if an error occurs, use the default error handler 
    else { 
     next(new Error('Sorry, an error occurred authenticating with FTP')); 
    } 

    } 
}