Angularjs 使用本地策略登录Passport将返回丢失的凭据

Angularjs 使用本地策略登录Passport将返回丢失的凭据,angularjs,authentication,mean-stack,passport-local,passport.js,Angularjs,Authentication,Mean Stack,Passport Local,Passport.js,我正在尝试使用MEAN Stack和passportjs构建一个具有用户身份验证的web应用程序,当我尝试登录时,401:返回缺少的凭据 以下是当地的策略: passport.use(new localStrategy({ usernameField: 'mobileNumber' }, function(username, password, done){ User.findOne({mobileNumber: username}, funct

我正在尝试使用MEAN Stack和passportjs构建一个具有用户身份验证的web应用程序,当我尝试登录时,401:返回缺少的凭据

以下是当地的策略:

    passport.use(new localStrategy({
        usernameField: 'mobileNumber'
    }, 
    function(username, password, done){
    User.findOne({mobileNumber: username}, function(err, user){
        if(err) {
            return done(err);
        }
        if(!user) { 
            return done(null, false, {
            message: 'User not found'
                });
            }   
        if(!user.validPassword(password)) {
            return done(null, false, {
                message: 'Incorrect Password'
            });
        }
        return done(null, user);
    });
    }
));
以及来自身份验证控制器的功能

module.exports.login = function (req, res){
    console.log("logging in");
    passport.authenticate('local', function(err, user, info){
        console.log("passport logging in");
        var token;
        if(err){
            res.status(404).json(err);
            return;
        }
        if(user){
            token = user.generateJwt();
            res.status(200);
            res.json({
                "token": token
            });
        }
        else {
            res.status(401).json(info);
        }
    })(req, res);
}
这条路线称之为:

app.post('/api/login', authCtrl.login);
以下是我的主要app.js:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var cors = require('cors');

var passport = require('passport');
require('./config/passport');


require('dotenv').load();
app.use(cors());

app.use(express.static('public'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(cookieParser());

app.use(passport.initialize());

require('./routes')(app);
以下是在angular controller中启动注册和登录的函数:

var loginUser = {
        mobileNumber : $scope.mobileNumber,
        password : $scope.password
    }
$scope.signIn = function(){
    AuthSrv.login(loginUser)
    .error(function(err){
        $scope.loginErrorTrigger = true;
        $scope.loginError = err.message;
        console.log(err);
    })
    .then(function(){
        $location.url('/account');
    });
}
$scope.signUp = function(){
    $location.url('/signUp');
} 

$scope.continue = function (){
    $scope.fillingError = checkFields();
    if(!$scope.fillingError){
        var signedUpUser = {
            mobileNumber : $scope.mobileNumber,
            password : $scope.password,
            firstName : $scope.firstName,
            lastName : $scope.lastName,
            email : $scope.email,
            address : $scope.address,
            university : $scope.university,
            faculty : $scope.faculty,
            academicYear : $scope.academicYear
        };
        AuthSrv.register(signedUpUser)
        .error(function(err){
            console.log(err);
            $scope.apiError = true;
        })
        .then(function (){
            $location.url('/signUpComplete');
        });
    }
}
这里的
console.log(err)
总是打印
Object{message:“缺少凭据”}

以下是AuthSrv中的函数:

login = function(user){
        console.log("Attempt to login");
        return $http.post('/api/login', user).success(function(data){
            console.log("log in succesful");
            console.log(data.token);
            console.log($window.localStorage['mean-token']);
            saveToken(data.token);
        });
    }
在这个周期中出了什么问题?请帮忙,这已经两天了,非常令人沮丧