Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
Javascript NodeJS中带有MySQL的Passportjs_Javascript_Mysql_Node.js_Express_Passport.js - Fatal编程技术网

Javascript NodeJS中带有MySQL的Passportjs

Javascript NodeJS中带有MySQL的Passportjs,javascript,mysql,node.js,express,passport.js,Javascript,Mysql,Node.js,Express,Passport.js,大家好,我尝试通过passport.js连接到MySQL数据库以验证用户身份,我不知道我的源代码出了什么问题。当我给出正确或错误的用户和密码信息时,会导致重定向失败。谁能告诉我怎么了?我是新来的 以下是我的源代码: var flash = require('connect-flash'); var express = require('express'); var passport = require('passport'); var LocalStrategy = require('passp

大家好,我尝试通过passport.js连接到MySQL数据库以验证用户身份,我不知道我的源代码出了什么问题。当我给出正确或错误的用户和密码信息时,会导致重定向失败。谁能告诉我怎么了?我是新来的

以下是我的源代码:

var flash = require('connect-flash');
var express = require('express');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(function(username,password,done){
   connection.query("select * from userinfo where UserName='"+username+"'     ",function(err,user){
    if(err)
    {
        return done(err);           
    }
    if(!user)
    {
        return done(null,false,{message: 'Incorrect user name'});           
    }
    if(user.password != password)
    {
       return done(null,false,{message: 'Incorrect password'});
    }

    return done(null,user);     

   });
}
));

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

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

app.post('/validates', passport.authenticate('local',{successRedirect: '/productdisplay', failureRedirect: '/validate', failureFlash: true }));

而且flash消息也不起作用。请告诉我,我几乎花了很多时间在这方面,我没有得到任何错误。我不知道如何解决这个问题。

要序列化用户,您需要发送user.id而不是user

passport.serializeUser(function(user, done) {
  done(null, user.id);
});
检查一下要点


查看完整节点应用程序

序列化和反序列化用户并不像您现在这样简单。您应该按user.id序列化该用户,并通过按给定的id查找该用户来反序列化该用户


另外,在将密码存储到数据库之前,请确保您正在对密码进行加密。存储的纯文本密码是一个很大的禁忌。

尝试在其中放置一些console.log消息,以查看它输入的代码的哪个部分。还有,你的express.cookie在哪里?看看上面的例子,谢谢你的回复。我在app.useflash;的上面找到了cookie解析器和会话中间件;。第一个问题,我只返回donenull,false,{message:'不正确的用户名'};我甚至没有收到闪信。有什么想法吗?请先告诉我如何解决这个问题。谢谢你的控制台。日志选项我解决了这个问题。很高兴听到你解决了这个问题,到底是什么问题?我只访问MYSQL返回数据用户[0]。我得到了用户信息。我使用json.stringfy检查了这一点。