node.js - done 不是 passport js 中的函数错误

标签 node.js express passport.js

我正在使用 passportjs 进行身份验证和 session 。我从 mysql 获取用户名,从客户端获取输入字段,但是当在验证时调用 done 时,我得到 done is not a function

server.js :

    var express = require('express');
var app = express();
var path = require('path');
var bodyParser = require('body-parser');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var cookieParser = require('cookie-parser');

// app.use(app.router);
app.use(passport.initialize());

app.use(passport.session());
app.use(bodyParser.json());

app.use(express.static(__dirname+"/staticFolder"));

var mysql = require('mysql');
var connection = mysql.createConnection({
    host:'127.0.0.1',
    user:'root',
    password:'sdf',
    database:'abc'
});
connection.connect(function(err){
    if(err){
        throw err;
    }
});

passport.serializeUser(function(user,done){
    console.log("serializeUser" + user);
    done(null,user.body.username);
})
passport.deserializeUser(function(id, done) {
     done(null, user);

 });


passport.use(new LocalStrategy({
    passReqToCallback : true

},function(username, password, done) {

    connection.query("select * from employeedetails where empid = "+username.body.username,function(err,user,w){
    if(err)
    {
        console.log(err+"fml $$$$$$$$$$");  
         return done(err);           
    }
    if(username.body.password == user[0].password){
    console.log(user[0].empid+" login");
     return done(null,user[0].empid);
  }
  else{
     return done(null,false,{message: 'Incorrect password'});
   console.log(user[0].empid+" fml"); 
  }

  });

}));



app.get('/',function(request,response){
    response.sendFile(__dirname+"/staticFolder/view/");
})

app.post('/saveEmployeeDetails',function(request,response){
    response.end();
})

app.get('/login',function(request,response){ //the file sent when /login is requested
    response.sendFile(__dirname+"/staticFolder/view/login.html");
})

app.post('/loginCheck',passport.authenticate('local', {
            successRedirect : '/', 
            failureRedirect : '/login', 
            failureFlash : true // 
    }),
        function(req, res) {
            console.log("hello");
            res.send("valid");
            res.redirect('/');
    });

最佳答案

能否请您引用以下讨论相同错误的链接

https://github.com/jaredhanson/passport/issues/421

它说当您删除 (passReqToCallBack: true) 选项时不会发生错误

关于node.js - done 不是 passport js 中的函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39031493/

相关文章:

node.js - 我应该使用扫描还是查询?

node.js - 如何向使用 fork() 创建的子进程发送消息?

javascript - 使用错误的 MIME 类型快速发送 Assets

node.js - express-handlebars 找不到我的布局或部分

javascript - 将 Flash 消息与 Angular Routing 结合使用

javascript - 检查用户是否登录 Passport.js

node.js - 如何在 Electron-Angular 项目中使用 forever-monitor?

node.js - Passport 反序列化用户未在 sails 中调用

angularjs - 防止访问 AngularJS 中的管理页面

javascript - 管道 Node 流与 highland js 并行