2015-10-02 25 views
0

我正在嘗試編寫一個登錄並驗證個人身份的應用程序。我已經有另一個名爲「醫生」的應用程序,我使用了Mongoose,Passport和Passport-Local模塊,該應用程序工作正常。表示不讀取請求

我試圖將該代碼複製並粘貼到我的新應用程序,並啓動一個新的數據庫,它不工作。我希望有人指出我的方式的錯誤。我必須先做什麼,或者我必須做什麼改變?

當我嘗試登錄,這是我收到的控制檯:

{ username: 'Chips', password: 'Salsa' } 
Searching.... 

它從未因故障或超時打破。這是我的登錄模塊:

var express = require('express'); 
var connection = require('../mySQLConnection'); 
var router = express.Router(); 
var Q = require('q'); 
var passport = require('passport'); 
var mongoose = require('mongoose'); 
var LocalStrategy = require('passport-local').Strategy; 

router.route('/') 
    .post(function(req, res, next){ 
     console.log(req.body); 
     console.log("Searching...."); 
     var auth = passport.authenticate('local', function(err, user){ 
      if(err){ 
       console.log('An error'); 
       return next(err); 
      } else if (!user){ 
       res.send({ success: false }); 
       console.log('This is false'); 
      } else { 
       req.logIn(user, function(err){ 
        if (err) { 
         return next(err); 
        } 
        res.send({ success:true, user: user }); 
        console.log("Login worked"); 
       }); 
      } 
     }); 

    }); 

module.exports = router; 

這是根文件夾中的server.js。

var login = require('./server/routes/login'); 

app.use(passport.initialize()); 
app.use(passport.session()); 

if(app.get('env') === 'development') { 
    mongoose.connect('mongodb://localhost/tasks'); 
} else { 
    console.log('production'); 
} 

var db = mongoose.connection; 
db.on('error', console.error.bind(console, 'connection error...')); 
db.once('open', function callback() { 
    console.log('db opened'); 
}); 

var userSchema = mongoose.Schema({ 
    username: String, 
    password: String 
}); 

var User = mongoose.model('User', userSchema); 

User.find({}).exec(function(err, collection){ 
    if (collection.length === 0) { 
     User.create({username:'Chips', password:'Salsa'}); 
    } 
}); 

passport.use(new LocalStrategy(
    function(username, password, done) { 
     User.findOne({username:username}).exec(function(err, user) { 
      if (user) { 
       return done(null, user); 
       console.log("This works"); 
      } else { 
       return done(null, false); 
       console.log("Nothing is found"); 
      } 
     }); 
    } 
)); 
passport.serializeUser(function(user, done) { 
    if(user) { 
     done(null, user._id); 
    } 
}); 
passport.deserializeUser(function(id, done) { 
    User.findOne({_id:id}).exec(function(err, user) { 
     if (user) { 
      return done(null, user); 
     } else { 
      return done(null, false); 
     } 
    }); 
}); 

app.use('/api/login', login); 

唯一的區別是代碼是這部分。注意:我不使用這個生產

if(app.get('env') === 'development') { 
    mongoose.connect('mongodb://localhost/tasks'); 
} else { 
    console.log('production'); 
} 

在該工程的原始應用,代碼

if(app.get('env') === 'development') { 
    mongoose.connect('mongodb://localhost/doctors'); 
} else { 
    mongoose.connect('mongodb://<user>:<password>/doctors'); 
}  

回答

0

似乎改變var router = express.Router();var app = express();和不斷變化的router.routeapp.route和添加模塊體佩解析器使我能夠處理請求。我在根server.js文件中有app = express()和body-parser,但是沒有登錄路由文件。正如我noob我每天學習新東西。