1
我試圖獲得與PassportJS用戶身份驗證的句柄,我無法讓它工作我的數據庫設置。PassportJS本地策略不工作Withh MongoDB
我正在使用MongoDB 沒有 Mongoose,我不能讓LocalStrategy模塊工作。
希望我的數據庫查詢不會太麻煩。
本地策略:
passport.use(new LocalStrategy(
function(username, password, done) {
//Fire up database
mongo.connect("mongodb://localhost:27017/formulas", function(e, db) {
if (e) {return next(e);}
var col = db.collection("users");
//Do a database query to find a record by username
col.findOne({"username": username}, function(err, user){
if (err) { return done(err);}
if(!user) {
return done(null, false, { message: "Please check your log in credentials." });
}
//if it exists call done() object with user information
bcrypt.compare(password, user.password, function(err, res){
if (err) throw err;
if (res == true) {
return done(null, {username: username, password: password});
} else {
return done(null, false, { message: "Invalid password."});
}
});
});
});
}));
我打電話passport.authenticate()
這樣的:
router.post('/login',
passport.authenticate('local', {successRedirect:'/', failureRedirect:'/about',failureFlash: false}),
function(req, res){
console.log(req.body);
console.log(req.user);
console.log("The user was logged");
});
SerializeUser
和deserializeUser
是這樣的:
passport.serializeUser(function(user, done) {
done(null, user.username);
});
passport.deserializeUser(function(id, done) {
mongo.connect("mongodb://localhost:27017/formulas", function(e, db){
if (e) {return next(e);}
var col = db.collection("users");
col.findOne({"username": id}, function(err, user){
done(err, {"username": id});
});
});
});
當我打電話app.post(/login)
我被帶到,沒有任何東西被記錄到控制檯,所以我不太清楚發生了什麼問題。
有關如何解決或如何排除故障的建議非常感謝。