表示不读请求
Express not reading request
我正在尝试编写一个用于登录和验证个人身份的应用程序。我已经有另一个名为 "doctors" 的应用程序,我使用了 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');
}
似乎将 var router = express.Router();
更改为 var app = express();
并将 router.route
更改为 app.route
并添加模块主体解析器使我能够处理请求。我在根 server.js 文件中有 app = express() 和 body-parser,但没有登录路由文件。作为新手,我每天都在学习新东西。
我正在尝试编写一个用于登录和验证个人身份的应用程序。我已经有另一个名为 "doctors" 的应用程序,我使用了 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');
}
似乎将 var router = express.Router();
更改为 var app = express();
并将 router.route
更改为 app.route
并添加模块主体解析器使我能够处理请求。我在根 server.js 文件中有 app = express() 和 body-parser,但没有登录路由文件。作为新手,我每天都在学习新东西。