2016-10-19 29 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> 

<% } %>