[英]Dynamic login/logout in Navbar
我試圖根據用戶狀態在導航欄中顯示 LOGIN 或 LOGOUT 的文本,我嘗試使用 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>
錯誤:未定義登錄
似乎您還沒有將變量傳遞給 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.