2017-04-21 9 views
0

Ich habe ein Projekt mit Passjs voll funktionsfähig, aber keine Flash-Nachrichten angezeigt.Password Local Connectflash funktioniert nicht mit EJS

Die passportjs Datei sieht wie folgt aus:

passport.use('local-login', new LocalStrategy({ 
    // by default, local strategy uses username and password, we will override with email 
    usernameField: 'email', 
    passwordField: 'password', 
    passReqToCallback: true // allows us to pass in the req from our route (lets us check if a user is logged in or not) 
    }, 
    function (req, email, password, done) { 
    if (email) { 
     email = email.toLowerCase() 
    } // Use lower-case e-mails to avoid case-sensitive e-mail matching 

    // asynchronous 
    process.nextTick(function() { 
     User.findOne({ 'local.email': email }, function (err, user) { 
     // if there are any errors, return the error 
     if (err) { 
      console.log(err) 
      return done(err) 
     } 

     // if no user is found, return the message 
     if (!user) { 
      console.log('No user found') 
      return done(null, false, req.flash('message', 'No user found')) 
     } 

Meine routes.js Datei sieht wie folgt aus:

// Login 
    app.get('/login', function (req, res) { 
    console.log('login get') 
    res.render('pages/login', {message: req.flash('messsage')}) 
    }) 

meine login.ejs Datei sieht wie folgt aus:

<%if (message) {%> 
    <%=message%> 

    <%}%> 

Ich habe keine Ahnung, warum es nicht funktioniert?

kommt meinen server.js, wenn es irgendein Problem im Zusammenhang ist zu umfasst:

var express = require('express') 
var mongoose = require('mongoose') 
var passport = require('passport') 
var path = require('path') 
var ejs = require('ejs') // Not used? 
var fs = require('fs') // Not used? 

const session = require('express-session') 
const MongoStore = require('connect-mongo')(session) 

// Reads .env variables for encrypted data 
require('dotenv').config() 

var port = process.env.PORT || 8080 
var db = process.env.MONGO_URI 

mongoose.connect(db) // connect to our database 

var app = express() 

app.set('views', './views') 
app.set('view engine', 'ejs') 

// GET /public/style.css etc. 
app.use(express.static(path.join(__dirname, '/public'))) 

var bodyParser = require('body-parser') 
app.use(bodyParser.urlencoded()) 

app.use(session({ 
    secret: 'hakunamatata', 
    store: new MongoStore({ 
    mongooseConnection: mongoose.connection, 
    saveUninitialized: false, 
    resave: false 
    }) 
})) 

var flash = require('connect-flash') 
app.use(flash()) 

var initPassport = require('./app/authentication/passport') 
initPassport(passport) 

app.use(passport.initialize()) 
app.use(passport.session()) // persistent login sessions 

require('./app/routes/routes')(app, passport) 

app.listen(port) 
console.log('Dev port is: ' + port) 

Antwort

0

ich getestet mit:

req.flash('loginMessage', 'No user found') 

statt:

req.flash('message', 'No user found') 

und auf der routes.js Datei:

{message: req.flash('loginMessage')} 

statt:

{message: req.flash('message')} 

Und jetzt funktioniert es ... Ich weiß nicht, was den Unterschied gemacht, aber ich hoffe, dass dies jemand anderes in der Zukunft helfen können ..

Verwandte Themen