我试图在导航栏中显示文本,根据用户状态显示登录或注销,我尝试使用 ejs 引擎,但没有奏效。
显示未定义登录名。
在我的 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");
});
}
});
});
我的 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>
错误:未定义登录
答案 0 :(得分:1)
似乎您还没有将变量传递给 ejs 模板。要访问 ejs 中的变量,您需要在呈现 ejs 模板时从服务器传递它。
看起来像这样
app.get("/", function(req, res){
res.render("header", {login: 'SOME VALUE' })
});
您可能想查看以下文章以查看一个工作示例。 https://dzone.com/articles/nodejs-tutorial-for-beginners-part-3-transferring