【发布时间】:2015-08-10 10:48:39
【问题描述】:
这可能是一些基本错误,但我正在观看教程,即使我认为在提交登录表单后我所做的一切都完全符合我的要求,但我被重定向到“failureRedirect”页面。当我查看护照模块中的源代码时,我发现了一些东西。
之后:
Strategy.prototype.authenticate = function(req, options) {
options = options || {};
var username = lookup(req.body, this._usernameField) || lookup(req.query, this._usernameField);
var password = lookup(req.body, this._passwordField) || lookup(req.query, this._passwordField);
//I added:
console.log("U-> " + username);
console.log("P-> " + password);
控制台说
U-> null
P-> null
然后在此之后,不会执行rest。
if (!username || !password) {
return this.fail({ message: options.badRequestMessage || 'Missing credentials' }, 400);
}
我不确定我应该在此处发布哪些代码部分。也许这会有所帮助
passport.use(new LocalStrategy(
function(username, password, done){
console.log("passport.use new LocalStrategy"); //never gets executed
//永远不会被执行
User.getUserByUsername(username, function(err, user){
if (err) throw err;
if(!user) {
console.log("Unknown user");
return done(null, false, {message: "Uknkown User"});
}
User.comparePassword(password, user.password, function(err, isMatch){
if (err) throw err;
if (isMatch) {
return done(null, user);
} else {
console.log("invalid Pass");
return done(null, false, {message: "Invalid Password"});
}
});
});
}));
router.post("/login", passport.authenticate("local", {failureRedirect:"/users/login/err", failureFlash:"invalid username or pass"}), function(req, res){
console.log("Authenticated OK");
req.flash("success", "You are logged in");
res.redirect("/xx");
});
【问题讨论】:
-
您是否正确设置了Passport middleware?
标签: javascript node.js express passport.js passport-local