'req.flash'不是一个函数

时间:2016-05-17 07:57:33

标签: node.js flash express

我正在使用本地护照,但是当我尝试它时,表达错误发送给我:req.flash不是一个函数。我一直在寻找如何解决它,但没有找到任何东西

这是我的配置和代码:

App.js

 `...imports like body parser, express, etc
  var passport = require('passport');
  var flash = require('connect-flash');

  ...app.js code

  app.use(session({
   key : config.session.key,
   secret : config.session.secret,
   resave : false,
   saveUninitialized : false,
   cookie: { maxAge: 60000 }
  }));

  app.use(flash());

  app.use(passport.initialize());
  app.use(passport.session());`

accountController.js

`var mongoose = require('mongoose');
 var flash = require('connect-flash');
 var User = require('../models/userSchema');

 var passport = require('passport');
 var LocalStrategy = require('passport-local').Strategy;

 module.exports = function(passport){

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

   passport.deserializeUser(function(id, done) {
     User.findById(id, function(err, user) {
       done(err, user);
     });
   });

   passport.use(new LocalStrategy({

     passReqToCallback : true

    },function(req, username, password, done){
        User.findOne({ app_id : username }, function(err, user){
            if(err) { return done(err); }
            if(!user){
                return done(null, false, { message: 'Id o contraseña incorrectos'});
            }
            if(!user.validPassword(password)){
                return done(null, false, { message: 'Id o contraseña incorrectos'});
            }
            return done(null, user);
        });
     }
 ));
};`

account.js(路线)

`var express = require('express');
 var router = express.Router();

 var passport = require('passport');
 require('../controller/accountController')(passport);

 var controller = require('../controller/accountController');

router.route('/(:err)?')
  /*.get(controller.accountPage)*/
    .post(passport.authenticate('local',{

        successRedirect: '/dashboard',
        failureRedirect: '/acount',
        failureFlash: true

     }));


module.exports = router;

1 个答案:

答案 0 :(得分:0)

确保:

app.use(passport.initialize());
app.use(passport.session());`
app.use(flash());
在路由定义之前调用

。将这些行放在代码中。您应首先定义护照配置(和闪存),然后定义路线。

另外,不要忘记包含以下行(将护照传递给配置文件):

require('./config/passport.js')(passport);

希望这会有所帮助!!