如何设置Passport?

时间:2015-01-25 22:58:51

标签: node.js mongoose passport.js passport-local

我通过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的{​​{1}}中设置了我的模型,该模型位于我应用的根文件夹中。以下是内容:

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."); }); 会打印到控制台。

0 个答案:

没有答案