2013-07-05 79 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')); 
    } 

    } 
}