2016-05-17 24 views
0

私はpassport-localで作業していますが、私が表現しようとすると、エラーが表示されます: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

shure:

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

がルート定義の前に呼び出されています。これらの行をコードの上に置きます。最初にパスポートの設定(およびフラッシュ)を定義してからルートを定義する必要があります。

また、次の行を含めることを忘れないでください(設定ファイルにパスポートを渡す):このことができます

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

希望を!

関連する問題