2016-10-19 10 views
0

sqlite3のチュートリアルの1つに従って認証アプリケーションを作成しました。ビューをハンドルバーからhtmlファイルに変更するまでは、すべてうまくいきました。速報とejsのフラッシュメッセージが表示されない

認証システムは機能しますが、フラッシュメッセージをポップアップすることはできません。多分あなたは私に助言を与えることができました。

マイミドルウェア:この例では

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> 

<% } %> 
関連する問題