2016-05-30 48 views
0

我使用用戶認證passport.js註銷,用戶成功登錄。 現在我試圖改變導航鏈接,即登錄註銷後,用戶成功登錄英寸後從登錄用戶登錄變化聯繫在Node.js的

的,我用下面的中間件在app.js文件

var express=require('express'); 
var path=require('path'); 
var bodyParser=require('body-parser'); 
var cookieParser=require('cookie-parser'); 
var passport=require('passport'); 
var LocalStrategy=require('passport-local').Strategy; 
var expressSession=require('express-session'); 
var app=express(); 
require('./db'); 
    var userModel=require('./models/usermodel'); 
    var adminModel=require('./models/adminmodel'); 

app.use(function (req, res, next) { 
    res.locals.login = req.isAuthenticated(); 
    next(); }); 


//Configuring Routes 
var routes = require('./routes/index'); 
var register = require('./routes/register'); 
var login = require('./routes/login'); 
var admin = require('./routes/admin'); 
var addblog = require('./routes/addblog'); 
var admindashboard = require('./routes/admindashboard'); 
var adminviewblog = require('./routes/admin-view-blog'); 
var viewblog = require('./routes/view-blog'); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 

// app uses configuration 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 

app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 
app.use(express.static(path.join(__dirname, 'routes/uploads'))); 
app.use(expressSession({ secret: 'keyboard catoard cat' })); 
app.use(passport.initialize()); 
app.use(passport.session()); 


app.use('/', routes); 
app.use('/register', register); 
app.use('/login', login); 
app.use('/admin', admin); 
app.use('/addblog', addblog); 
app.use('/admindashboard', admindashboard); 
app.use('/admin-view-blog', adminviewblog); 
app.use('/view-blog', viewblog); 

//passport configuration 

    /*=======passport configuration========*/ 
passport.use("userss", new LocalStrategy(userModel.authenticate())); 
passport.use("adminn", new LocalStrategy(adminModel.authenticate())); 
passport.serializeUser(function(user, done){ 
    done(null, user.id); 
    }); 
passport.deserializeUser(function(id, done){ 
    userModel.findById(id, function(err, user){ 
     done(err, user); 
     }); 

    }); 
    passport.deserializeUser(function(id, done){ 
    adminModel.findById(id, function(err, user){ 
     done(err, user); 
     }); 

    }); 


//create server 
app.listen(3000, function(){ 
    console.log('Server is running localhost:3000'); 
    }); 

和EJS模板

<% if login %> 
     <li><a href="/logout">Logout</a></li> 
     <% else %> 
     <li><a href="/login">Login</a></li> 
     <li><a href="/register">Register</a></li> 
     <% endif %> 

但它不是加工。 顯示以下錯誤的頁面。

SyntaxError: Unexpected identifier in F:\saurabh_sharma\nodejs\blogsystem\views\index.ejs while compiling ejs 
    at Function (native) 
    at Object.Template.compile (F:\saurabh_sharma\nodejs\blogsystem\node_modules\ejs\lib\ejs.js:464:12) 

我GOOGLE了這個問題,但沒有找到解決方案。

如果有人對此有想法,請讓我知道。

謝謝。

+0

我不認爲,除去多餘的deserializeUser(後你應該有deserializeUser()' –

+0

確定...的'兩個定義),還是其不工作 –

+0

什麼是你的護照代碼策略? –

回答

0

不正確的!

<% if(true){ %> 
<h1>foo</h1> 
<% } %> 
<% else{ %> 
<h1>bar</h1> 
<% } %> 

正確

<% if(true){ %> 
<h1>foo</h1> 
<% } else{ %> 
<h1>bar</h1> 
<% } %> 

請正確構造你的條件語句。

參考:Can I use conditional statements with EJS templates (in JMVC)?

+0

錯誤被刪除,但沒有改變鏈接,在中間件有任何問題? –

+0

請嘗試打印模板中的TOF'login'值,以驗證是否login'的'值傳遞給模板或不 –

+0

當我打印<%= login%>在我的模板它顯示布爾「假」後更換req.locals與app.locals –

0
<% if (login) { %> 
<li><a href="/logout">Logout</a></li> 
<% } else { %> 
<li><a href="/login">Login</a></li> 
<li><a href="/register">Register</a></li> 
<% } %> 
+0

我做到了,錯誤被刪除,但它不改變鏈接。 –

+0

您應該檢查「登錄」中的內容 – Martial

+0

登錄名稱顯示爲「false」布爾型 –