2015-06-11 31 views
1

我希望每一個他或她登錄。我應該如何在非中間件(Passport.js)中使用req?

我被告知,只有中間件獲得REQ,資源,以及未來參數的時間來更新用戶的IP,但我使用passportjs,這應該是第一位的授權用戶。我應該如何更新用戶數據?

以下是我使用基本策略的passport.js代碼塊。

passport.use(new BasicStrategy(
    function(username, password, callback){ 
     User.findOne({username:username}, function(err,user){ 
      if(err){return callback(err);} 
      //no user found with the email 
      if(!user){return callback(null, false);} 
      user.verifyPassword(password, function(err,isMatch){ 
       if(err){ return callback(err);} 
       // password did not match 
       if(!isMatch){return callback(null,false);} 
       //success 

       // UPDATE USER INFO 
       user.token = jwt.sign(user.email+Date.now(), "testtoken");//should change later 
       user.last_login = Date.now(); 

       // I AM TRYING TO UPDATE THIS WITH req.ip 
       user.last_ip = req.ip; 

       user.save(function(err, user1){ 
        if(err) return callback(err); 
        return callback(null,user); 
       }); 
      }); 
     }); 
    } 
)); 

回答

1

您可以配置BasicStrategy將請求傳遞作爲第一個參數:

passport.use(
    new BasicStrategy({ passReqToCallback : true }, function(req, username, password, callback) { 
    ... 
    }) 
); 

這(可惜)沒有有據可查的,但我相信大多數護照策略支持(see also)。

相關問題