簡體   English   中英

節點服務器未將Angular http post數據對象視為對象

[英]Angular http post data object isn't being seen as an object by the node server

我在客戶端使用angular來執行帶有用戶對象的服務器發布。 這個用戶對象只允許我在一個對象中傳遞所有用戶信息,用戶名,密碼,電子郵件,名稱等。 不必將每個變量作為單獨的變量傳遞。

我在chrome的開發人員工具中看到以下POST參數。

{"username":"adfasdfasdf","password":"12123123123"}

但是,在我的服務器端js中,數據作為單獨的變量傳入。 而不是同時具有用戶名和密碼的對象。 因此,console.log('userData ='+ userData)行記錄了用戶名。 並且“ done”變量包含密碼。

為什么我沒有在服務器端獲取對象?

客戶端HTML

<form class="form-signin", ng-submit="register()">
  <input type="text" class="form-control" placeholder="Username" ng-model="user.username">
  <input type="password" class="form-control" placeholder="Password" ng-model="user.password">
</form>

客戶端JS

    var pollControllers = angular.module('pollControllers', []);
pollControllers.controller('RegisterCtrl', ['$scope', '$http', '$location',
    function($scope, $http, $location) {
            // This object is filled by the form
            $scope.user = {};

            $scope.register = function() {
                $http.post('http://xx.xx.xxx.xxx:3000/register', $scope.user);
            }
    }
]);

服務器JS

module.exports = function(passport) {
  function(userData, done) {
    console.log('userData = ' + userData); // !this outputs the username!
    console.log('done = ' + done); // !this outputs the password!
  }
}

Passport local獲取第一個參數作為用戶名,第二個參數作為密碼,第三個參數作為回調。

passport.use(new LocalStrategy(
  function(username, password, done) {
    User.findOne({ username: username }, function (err, user) {
      if (err) { return done(err); }
      if (!user) { return done(null, false); }
      if (!user.verifyPassword(password)) { return done(null, false); }
      return done(null, user);
    });
  }
));

本地Github護照頁面

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM