我通过mongoose-simpledb使用 Mongoose 。它只是 Mongoose 上的一个小层,它允许我在名为dbmodels
. 我有一个auth.js
文件来处理基于一些教程的身份验证。内容:
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var db = require('mongoose-simpledb').db;
passport.use('local', new LocalStrategy({usernameField: 'email', passwordField: 'password'},
function(username, password, done) {
db.user.findOne({ email: username }, function(err, user) {
if (err) return done(err);
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.password != password) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
db.user.findById(id, function(err, user) {
done(err, user);
});
});
module.exports = passport;
我也设置了这条路线:
router.post('/login', passport.authenticate('local', {
failureRedirect: '/login',
successRedirect: '/user'
}));
我不知道我在做什么,我真的很生气。
我在这里做错了什么?我有一个数据库,里面有一个虚拟用户。当我使用凭据登录时,我得到了这个:http: //i.imgur.com/vThiZ4i.png
编辑
我的模型设置user.js
在dbmodels
我的应用程序的根文件夹中。以下是内容:
var ObjectId = require('mongoose-simpledb').Types.ObjectId;
exports.schema = {
first_name: String,
last_name: String,
email: String,
password: String,
// TODO: Should these be strings?
birthday: {
date: Number,
month: Number,
year: Number,
},
phone: String
}
我尝试在查找之间user
和User
查找时更改大小写。
该auth.js
文件与 一起位于根文件夹中app.js
,其中包含我的数据库初始化在最顶部:
var db = simpledb.init({connectionString: '<MongoLab URL>'}, function(err, db) {
console.log("Connected to database.");
});
在console.log
我尝试登录之前打印到控制台。