[英]Dynamic login/logout in Navbar
I'm trying to display text in the navbar that says LOGIN or LOGOUT depending on the user status, I try to use ejs engine, but it didn't work.我试图根据用户状态在导航栏中显示 LOGIN 或 LOGOUT 的文本,我尝试使用 ejs 引擎,但它没有用。
It shows login is not defined.它显示未定义登录。
In my app.js:在我的 app.js 中:
app.get("/logout", function (req, res) {
req.logout();
res.redirect("/");
});
app.post("/register", function (req, res) {
User.register({ username: req.body.username }, req.body.password, function (err, user) {
if (err) {
console.log(err);
res.redirect("/register");
} else {
passport.authenticate("local")(req, res, function () {
res.redirect("/secrets");
});
}
});
});
app.post("/login", function (req, res) {
const user = new User({
username: req.body.username,
password: req.body.password
});
req.login(user, function (err) {
if (err) {
console.log(err);
} else {
passport.authenticate("local")(req, res, function () {
res.redirect("/secrets");
});
}
});
});
My header.ejs:我的 header.ejs:
<ul class="nav navbar-nav navbar-right">
<li id="home"><a href="/">HOME</a></li>
<li id="register"><a href="/register">REGISTER</a></li>
<% if (login) { %>
<li> <a href="/logout">Logout</a></li>
<% } else { %>
<li><a href="/login">Login</a></li>
% }%>
</ul>
error: login is not defined错误:未定义登录
It seems iike you have not passed the variable to the ejs template.似乎您还没有将变量传递给 ejs 模板。 To access a variable in the ejs you need to pass it from the server while rendering the ejs template.要访问 ejs 中的变量,您需要在渲染 ejs 模板时从服务器传递它。
This would look like this这看起来像这样
app.get("/", function(req, res){
res.render("header", {login: 'SOME VALUE' })
});
You might want to look at the following article to look a working example.您可能想查看以下文章以查看一个工作示例。 https://dzone.com/articles/nodejs-tutorial-for-beginners-part-3-transferring https://dzone.com/articles/nodejs-tutorial-for-beginners-part-3-transferring
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.