后从登录用户登录变化联系在Node.js的
我使用用户认证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了这个问题,但没有找到解决方案。
如果有人对此有想法,请让我知道。
谢谢。
不正确的!
<% 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)?
错误被删除,但没有改变链接,在中间件有任何问题? –
请尝试打印模板中的TOF'login'值,以验证是否login'的'值传递给模板或不 –
当我打印在我的模板它显示布尔“假”后更换req.locals与app.locals –
<% if (login) { %>
<li><a href="/logout">Logout</a></li>
<% } else { %>
<li><a href="/login">Login</a></li>
<li><a href="/register">Register</a></li>
<% } %>
我不认为,除去多余的deserializeUser(后你应该有deserializeUser()' –
确定...的'两个定义),还是其不工作 –
什么是你的护照代码策略? –