在使用此代码登录到应用程序后重定向到主页面的快速控制器中:
req.session.user = user.userLogin;
if (req.session.user=='Admin') {
global.loggedAdmin = user.userLogin;
}
else {
global.loggedUser = user.userLogin;
}
res.redirect('/');
在主菜单中检查用户是否已登录:
nav#menu.panel(role='navigation')
ul
li
if loggedUser
li
span.setting Welcome #{loggedUser}
a(href='/account')
i.fa.fa-cog
li
hr
li
a(href='/logout') Logout
li
else if loggedAdmin
li
span.setting Welcome #{loggedAdmin}
a(href='/account')
i.fa.fa-cog
li
hr
li
a(href='/articles') Articles
li
hr
li
a(href='/files') Files
li
hr
li
a(href='/users') Users
li
hr
li
a(href='/logout') Logout
else
li
a(href='/login') Log in
li
hr
li
a(href='/register') Register
在app.js中:
app.use(session({
secret: 'sdfghjkl2345678tyu',
unset:'destroy',
resave: false,
saveUninitialized: false
}));
但是,当首次以管理员身份登录并从其他设备菜单打开网站时,将用户登录为管理员。我可以在不使用全局控制器的情况下将会话变量传递给pug模板吗?如果是,该怎么做?
答案 0 :(得分:0)
首先,在app.router()中间件之前使用app.use()中间件非常重要。
您可以在app中间件中尝试这种方式
app.use((req, res, next) => {
res.locals.myVar = 'sample value';
next();
});
要获取myVar的值,请在jade文件中使用
index.jade
extends layout
block content
value of myVar is #{myVar}
瞧!!!
但是你可能想要改变程序,你现在正在使用它。这不是一种有前途和安全的方式。尝试使用适当的JSON值呈现页面。