2015-08-19 87 views
1

我目前正在使用護照身份驗證的節點js項目。 但我得到以下錯誤消息:NodeJS護照未知身份驗證策略

錯誤: 「未知的身份驗證策略」

這裏是我的代碼:

LocalStrategy = require('passport-local').Strategy; 
var UserModel = require('../models/user'); 

module.exports = function(passport){ 
passport.serializeUser(function(user, done){ 
    done(null, user.id); 
}); 
passport.deserializeUser(function(id, done) { 
    User.findById(id, function(err, user){ 
     return done(err, user); 
    }); 
}); 

passport.use('local-signup', new LocalStrategy({ 
    passReqToCallback: true 
}, function(req, username, password, done){ 
    process.nextTick(function(){ 
     User.findOne({username: username}, function(err, user) { 
      if(err){ 
       return done(err); 
      } 

      if(user){ 
       return done(null, false, req.flash('signUpErr', 'The mail is taken')); 
      } else { 
       var newUser = new UserModel(); 
       newUser.name = username; 
       newUser.password = newUser.generateHash(password); 

       newUser.save(function(err){ 
        if(err){ 
         throw err; 
        } 
        console.log('All Ok'); 
        return done(null, newUser); 
       }) 
      } 
     }); 
    }); 
})); 

}

路線:

//Post requests 
app.post('/signup', passport.authenticate('local-signup', { 
    successRedirect: '/', 
    failureRedirect : '/signup' 
})); 

我的模特:

var mongoose = require('mongoose'); 
var bcrypt = require('bcrypt-nodejs'); 

var UserSchema = new mongoose.Schema({ 
    name: String, 
    password: String 
}); 

UserSchema.method.generateHash = function(password){ 
    return bcrypt.hash(password); 
}; 
module.exports = mongoose.model('UserModel', UserSchema); 

我真的需要你的幫助,謝謝!

+0

如何/你在哪裏調用一個配置護照(代碼你的第一個塊)的模塊? – robertklep

+0

我幾乎完全相同的代碼有同樣的問題。它來自一個教程。 – ManyQuestions

回答

0

檢查,如果你路過的策略與用戶憑據

沿
var credentials = { 
    username:"username", 
    password:"password", 
    strategy:"local" 

      }; 
$http.post('auth/signin', credentials); 

服務器端

function passportAuthenticate(req, res, next, strategy) { 
    passport.authenticate(strategy, function(err, user, info) { 
     if (err || !user) { 
      res.status(400).send(info); 
     } else { 
      next(req, res, user); 
     } 
    })(req, res, next); 
}