Passport身份validation将失败并显示关联的模型

我在数据库build模方面做了一个补充,我想把我的用户附加到一个特定的公司。 我遵循Sequelize文档来创build用户和公司之间的一对一关系,但似乎已经搞砸了我的身份validation,因为代码的引入已经将每次提交的login提交给我的身份validation的failureRedirect部分码。 有没有人遇到类似的问题?

用户模式:

 var bcrypt = require('bcrypt-nodejs'); module.exports = function(sequelize, DataTypes) { var User = sequelize.define('user', { user_id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true }, firstName: { type: DataTypes.STRING, field: 'first_name' }, lastName: { type: DataTypes.STRING, field: 'last_name' }, email: { type: DataTypes.STRING, isEmail: true, unique: true }, password: DataTypes.STRING, organizationId: { type: DataTypes.STRING, unique: true } }, { freezeTableName: true, classMethods: { associate: function(db) { User.belongsTo(db.Organization); } } }); return User; } 

组织模式:

 module.exports = function(sequelize, DataTypes) { var Organization = sequelize.define('organization', { organizationId: { type: DataTypes.INTEGER, field: 'organization_id', autoIncrement: true, primaryKey: true }, organizationName: { type: DataTypes.STRING, field: 'organization_name' }, admin: DataTypes.STRING, members: DataTypes.STRING },{ freezeTableName: true }); return Organization; } 

数据库索引:

  var Sequelize = require('sequelize'); var path = require('path'); var config = require(path.resolve(__dirname, '..', '..','./config/config.js')); var sequelize = new Sequelize(config.database, config.username, config.password, { host:'localhost', port:'3306', dialect: 'mysql' }); sequelize.authenticate().then(function(err) { if (!!err) { console.log('Unable to connect to the database:', err) } else { console.log('Connection has been established successfully.') } }); var db = {} db.Organization = sequelize.import(__dirname + "/organization"); db.User = sequelize.import(__dirname + "/user"); db.FormApp = sequelize.import(__dirname + "/formapp"); db.User.associate(db); db.FormApp.associate(db); db.sequelize = sequelize; db.Sequelize = Sequelize; sequelize.sync(); module.exports = db; 

护照authentication路由:

 var express = require('express'); var siteRoutes = express.Router(); var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var models = require('../models/db-index'); /*==== Passport Configuration ====*/ // Serialize sessions passport.serializeUser(function(user, done) { console.log(user.user_id + "Serializing"); done(null, user.user_id); }); passport.deserializeUser(function(user_id, done) { models.User.find({where: {user_id: user_id}}).then(function(user){ done(null, user); }).error(function(err){ done(err, null); }); }); passport.use('local', new LocalStrategy({ passReqToCallback : true, usernameField: 'email' }, function(req, email, password, done) { //Find user by email models.User.findOne({ where: { email: req.body.email, password: req.body.password } }).then(function(user) { return done(null, user); }).catch(function(err) { return done(null, false, req.flash('message', 'Email not found.')); }); } )); /*==== Index ====*/ siteRoutes.get('/', function(req, res){ res.render('pages/index.hbs'); }); siteRoutes.get('/flash', function(req, res){ req.flash('test', 'it worked'); res.redirect('/') }); /*==== Login ====*/ siteRoutes.route('/login') .get(function(req, res){ res.render('pages/login.hbs'); }) .post(passport.authenticate('local', { successRedirect: '/app', failureRedirect: '/login', failureFlash: 'Invalid username or password.' })); siteRoutes.route('/sign-up') .get(function(req, res){ res.render('pages/sign-up.hbs'); }) .post(function(req, res){ models.User.create({ firstName: req.body.firstName, lastName: req.body.lastName, email: req.body.email, password: req.body.password }).then(function() { res.redirect('/app'); //res.redirect('/sign-up/create-organization'); }).catch(function(error){ res.send(error); }) }); module.exports = siteRoutes;