1

我通过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.jsdbmodels我的应用程序的根文件夹中。以下是内容:

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
}

我尝试在查找之间userUser查找时更改大小写。

auth.js文件与 一起位于根文件夹中app.js,其中包含我的数据库初始化在最顶部:

var db = simpledb.init({connectionString: '<MongoLab URL>'}, function(err, db) {
    console.log("Connected to database.");
});

console.log我尝试登录之前打印到控制台。

4

0 回答 0