Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 护照验证似乎不起作用_Node.js_Express_Sequelize.js - Fatal编程技术网

Node.js 护照验证似乎不起作用

Node.js 护照验证似乎不起作用,node.js,express,sequelize.js,Node.js,Express,Sequelize.js,这是我的Passport.js中间件我在这里遇到的问题我无法登录没有错误,注册路由正在成功运行我正在输入正确的凭据,我的视图中的所有内容都很好,但我没有重定向到我尝试的任何地方我遇到了http:500错误,并且没有在username='username'和password='password'处进行选择查询。 //Passport config require('./config/passport')(passport) //Passport MiddleWare app.use(passpor

这是我的Passport.js中间件我在这里遇到的问题我无法登录没有错误,注册路由正在成功运行我正在输入正确的凭据,我的视图中的所有内容都很好,但我没有重定向到我尝试的任何地方我遇到了http:500错误,并且没有在username='username'和password='password'处进行选择查询。

//Passport config
require('./config/passport')(passport)
//Passport MiddleWare
app.use(passport.initialize());
app.use(passport.session());
这是我的passport.js文件代码

var LocalStrategy = require('passport-local').Strategy;
var User = require('../models/user');
var bcrypt = require('bcryptjs');

module.exports = function (passport) {

    passport.use(new LocalStrategy(function (username, password, done) {

         models.User.findOne({
             where:{username: username}
         }.then(function (err,user) {

            if(err) console.log(err);

            if (!user) {
                return done(null, false, {message: 'No user found!'});
            }

            bcrypt.compare(password, user.password, function (err, isMatch) {
                if (err)
                    console.log(err);

                if (isMatch) {
                    return done(null, user);
                } else {
                    return done(null, false, {message: 'Wrong password.'});
                }
            });


         })
        )

    }));


    passport.serializeUser(function (user, done) {
        done(null, user.id);
    });

    passport.deserializeUser(function (id, done) {
        User.findById(id, function (err, user) {
            done(err, user);
        });
    });
}
/*
*Post Login
*/
router.post('/login',function(req,res,next){

  passport.authenticate('local',{
    successRedirect:'/',
    failureRedirect:'/admin/pages',
    failureFlash:true
  })(req,res,next);

})
这是我在route中的登录方法

var LocalStrategy = require('passport-local').Strategy;
var User = require('../models/user');
var bcrypt = require('bcryptjs');

module.exports = function (passport) {

    passport.use(new LocalStrategy(function (username, password, done) {

         models.User.findOne({
             where:{username: username}
         }.then(function (err,user) {

            if(err) console.log(err);

            if (!user) {
                return done(null, false, {message: 'No user found!'});
            }

            bcrypt.compare(password, user.password, function (err, isMatch) {
                if (err)
                    console.log(err);

                if (isMatch) {
                    return done(null, user);
                } else {
                    return done(null, false, {message: 'Wrong password.'});
                }
            });


         })
        )

    }));


    passport.serializeUser(function (user, done) {
        done(null, user.id);
    });

    passport.deserializeUser(function (id, done) {
        User.findById(id, function (err, user) {
            done(err, user);
        });
    });
}
/*
*Post Login
*/
router.post('/login',function(req,res,next){

  passport.authenticate('local',{
    successRedirect:'/',
    failureRedirect:'/admin/pages',
    failureFlash:true
  })(req,res,next);

})
这是我的用户.js

var express=require('express');
var router=express.Router();
var User = require('../models/user');
var models=require('../models');
var passport=require('passport');
var bcrypt=require('bcryptjs');


//Get Register
router.get('/register',function(req,res){
res.render('register',{
  title:'Register'
})
});

/*
* Register Post
*/

router.post('/register',function(req,res){

     var name=req.body.name;
     var email=req.body.email;
     var username=req.body.username;
     var password=req.body.password;
     var password2=req.body.password2;

     models.User.findOne({
       where:{username:username}
     }).then(function(copyuser){
       if(copyuser){
         console.log('User already exist');
          redirect('/users/login');
       }
       else{
        var user={
          name: name,
          email: email,
          username: username,
          password: password,
          admin: 0
        };

    //  res.json(user);
    bcrypt.genSalt(10,function(err,salt){
      bcrypt.hash(user.password,salt,function(err,hash){

        user.password=hash;

          models.User.create(user).then(function(user){
            res.json(user);
          })



          console.log('You are now registered');
          res.redirect('/admin/pages')


    })
  })
       }
     })

})

/*
* Get Login
*/
router.get('/login',function(req,res){
  if(res.locals.user) res.redirect('/');

  res.render('login',{
    title:'log in'
  })

})

/*
*Post Login
*/
router.post('/login',function(req,res,next){

  passport.authenticate('local',{
    successRedirect:'/',
    failureRedirect:'/admin/pages',
    failureFlash:true
  })(req,res,next);

})

//Exports
module.exports=router;

为什么要使用
models.User.findOne
。模型变量在此上下文中未定义,对吗?。所以它应该是
User.findOne
你也可以发布你的用户类吗?请更新User.js route-NuOne-Tdid你在你的codein passport.js中用
User.findOne
替换
models.User.findOne
,然后你能抓到吗?和console.log(错误)查看是否有错误或console.log(用户)在里面,然后立即查看是否没有错误?它看起来应该是
User.findOne
而不是models.User,因为您不需要passport.js中的模型