2016-10-19 31 views
0

我根據其中一個教程使用sqlite3製作了一個認證應用程序。一切工作正常,直到我將視圖從句柄改爲html文件。express和ejs中的快捷消息不會顯示

身份驗證系統的工作原理,但我不能設法彈出的Flash消息。也許你可以爲我提供建議。

我中間件:在這個例子中

var express = require('express'); 
var path = require('path'); 
var app = express(); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var exphbs = require('express-handlebars'); 
var expressValidator = require('express-validator'); 
var flash = require('connect-flash'); 
var session = require('express-session'); 
var passport = require('passport'); 
var LocalStrategy = require('passport-local').Strategy; 

app.set('views', path.join(__dirname, 'views')); 
app.engine('.html', require('ejs').__express); 
app.set('view engine', 'html'); 

app.use(express.static(path.join(__dirname, 'public'))); 

app.use(function(req,res,next) { 
res.locals.success_msg = req.flash('success_msg'); 
res.locals.error_msg = req.flash('error_msg'); 
res.locals.error = req.flash('error'); 
res.locals.users = req.user || null; 
next(); 
}); 

服務器端:

router.post('/login', 
passport.authenticate('local',{ successRedirect: '/play/gallery',failureRedirect: '/users/login',failureFlash:true }), 
function(req,res) { 
res.redirect('/'); 

req.flash('success_msg','You are logged in'); 

}); 

router.get('/logout',function(req,res){ 
req.logout(); 

req.flash('success_msg','You succesfully logged out'); 

res.redirect('/users/login'); 
}) 

和實例,其中我用這個register.html:

<%= if (error_msg) { %> 

    <div class="alert alert-danger"> You are not loged in</div> 
<% } %> 

任何人可以幫助我有點如何聲明代碼,因爲這甚至不加載註冊頁面。

預先感謝您。

回答

2

解決了自己:

<% if (error.length > 0){ %> 

<div class="alert alert-danger"><%= error %></div> 

<% } %> 

<% if (success_msg.length > 0){ %> 

<div class="alert alert-success"><%= success_msg %></div> 

<% } %> 
<% if (error_msg.length > 0){ %> 

<div class="alert alert-danger"><%= error_msg %></div> 

<% } %>