【问题标题】:Passportjs with MySQL in NodeJS在 NodeJS 中使用 MySQL 的 Passportjs
【发布时间】:2013-12-23 12:11:10
【问题描述】:

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

这是我的源代码:

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 消息也不起作用。请告诉我,我几乎花了很多时间在这上面,我没有得到任何错误。我不知道如何解决这个问题。

【问题讨论】:

  • 尝试在其中放置一些console.log 消息,以查看它正在输入代码的哪个部分。还有你的 express.cookie 东西在哪里?看看github.com/jaredhanson/passport上的例子
  • 感谢您的回复。我在 app.use(flash()); 的上方获得了 cookie 解析器和会话中间件。第一个问题我只是把 return done(null,false,{message: 'Incorrect user name'});我什至没有收到闪信。任何想法给我指导我先解决这个问题。
  • 感谢您的 console.log 选项,我解决了这个问题。
  • 很高兴您解决了这个问题,到底是什么问题?
  • 我只是访问MYSQL返回数据用户[0]。我得到了用户信息。我使用 json.stringfy() 进行了检查。

标签: javascript mysql node.js express passport.js


【解决方案1】:

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

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

检查这个要点Passport js with MySQL

查看全节点应用Passport js with MySQL

【讨论】:

    【解决方案2】:

    对用户进行序列化和反序列化并非易事。您应该通过user.id 序列化用户并通过给定的id 查找该用户来反序列化它。

    附带说明,请确保在将密码存储到数据库之前对其进行加盐处理。存储纯文本密码是一个很大的禁忌。

    【讨论】:

      猜你喜欢
      • 2016-11-28
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 1970-01-01
      • 2013-11-04
      • 2017-03-17
      • 2016-10-16
      • 1970-01-01
      相关资源
      最近更新 更多