2016-05-17 2 views
0

Я работаю с местным паспортом, но когда я его попробую, отправьте мне сообщение об ошибке: req.flash не является функцией. Я не искал, как ее решить, но нашел ничего'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; 

ответ

0

Сделайте так:

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

вызывается перед определением маршрутов. Поместите эти строки в свой код. Сначала вы должны определить конфигурации паспорта (и вспышку), а затем определить маршруты.

Кроме того, не забудьте включить следующую строку (передать паспорт в конфигурационном файл):

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

Надеется, что это помогает !!

Смежные вопросы