首页 文章

表示没有阅读请求

提问于
浏览
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');
}

1 回答

  • 0

    似乎将 var router = express.Router(); 更改为 var app = express(); 并将 router.route 更改为 app.route 并添加模块正文解析器使我能够处理请求 . 我在根server.js文件上有app = express()和body-parser,但是没有登录路由文件 . 正如我所说的那样,我每天都学到新的东西 .

相关问题