我一直试图在nodejs上使用护照进行本地身份验证工作,并且我可以告诉我所有的代码它是正确的但我一直得到同样令人讨厌的错误"未知的身份验证策略所以也许其他人可以帮我解决这个问题我的代码如下所示.
这是我在nodejs中配置护照的代码.
var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var User = 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) { done(err, user); }); }); passport.use('local-signup', new LocalStrategy({ usernameField : 'username', passwordField : 'password', passReqToCallback : true }, function(req, username, password, done) { process.nextTick(function() { User.findOne({ 'local.username' : username}, function(err, user) { if (err) return done(err); if(user) { return done(null, false, req.flash('signupMessage', 'That Username is already taken.')); } else { var newUser = new User(); newUser.local.username = username; newUser.local.password = newUser.generateHash(password); newUser.save(function(err) { if(err) throw err; return done(null, newUser); }); } }); }); })); passport.use('local-login', new LocalStrategy({ usernameField : 'username', passwordField : 'password', passReqToCallback : true }, function(req, username, password,done) { User.findOne({ 'local.username' : username}, function(err, user) { if(err) return done(err); if(!user) return done(null, false, req.flash('loginMessage', 'No user found.')); if(!user.validPassword(password)) return done(null, false, req.flash('loginMessage', 'Oops! Wrong password.')); return done(null, user); }); })); };
这是服务器端的帖子.
app.post('/signin', passport.authenticate('local-login', { successRedirect : '/profile', failureRedirect : '/login', failureFlash : true }));
这是html doc中的表单
任何人都可以通过告诉我我做错了什么来帮助我.谢谢
require('./config/passport')(passport);
更改文件的路径.如果没有这项工作,护照的配置将不会传递给路线.
以下是该行所在位置的片段:
// server.js // configuration =============================================================== mongoose.connect(configDB.url); // connect to our database require('./config/passport')(passport); // pass passport for configuration