[英]How can I change this Navbar dropdown item to update from "Login" to "Logout" when a user logs in?
[英]I want to change my navbar from login to logout when the user is already login ESJ NodeJs
我的问题是当用户已经登录时,我想将导航栏更改为注销。 我正在为我的 web 项目使用 Nodejs 和 Ejs 模板。 我的代码如下。 请帮我解决这个问题。 我也在使用 1 级身份验证。 在我进行散列之前,我试图先做基础。 非常感谢你!
应用程序.js
//jshint esversion:6
const express = require("express");
const https = require("https");
const bodyParser = require("body-parser");
const mongoose = require("mongoose");
const res = require("express/lib/response");
const app = express();
app.use(express.static("public"));
app.set("view engine", "ejs");
app.use(bodyParser.urlencoded({ extended: true }));
//TODO
mongoose.connect("mongodb://localhost:27017/barangayportalDB", { useNewUrlParser: true });
const userSchema = {
firstname: String,
lastname: String,
email: String,
password: String,
conpassword: String,
role: String
};
const User = new mongoose.model("User", userSchema);
app.get("/", function (req, res) {
res.render("main");
});
app.get("/login", function (req, res) {
res.render("login");
});
app.get("/register", function (req, res) {
res.render("register");
});
app.get("/logout", async (req, res) => {
res.redirect("/")
});
app.post("/login", function (req, res) {
const username = req.body.username;
const password = req.body.password;
const role = "admin";
User.findOne({ email: username }, function (err, foundUser) {
if (err) {
console.log(err);
} else {
if (foundUser) {
if (foundUser.role === role) {
res.render("adminportal")
}
else if (foundUser.password === password) {
res.render("portal")
}
}
}
})
});
app.post("/register", function (req, res) {
const newUser = new User({
firstname: req.body.firstname,
lastname: req.body.lastname,
email: req.body.username,
password: req.body.password,
conpassword: req.body.conpassword
});
newUser.save(function (err) {
if (err) {
console.log(err);
} else {
res.render("portal")
}
});
});
//---------------------------------------
app.listen(3000, function () {
console.log("Server started on port 3000");
});
这是我的 Navbar.ejs 这是我想将登录更改为注销的地方。
<nav class="navbar navbar-expand-lg navbar-light">
<div class="container">
<a class="navbar-brand" href="/">Barangay Portal</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#home">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#News">About</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown"
aria-expanded="false">
Request
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="/reqbrgyid">Dropdown</a></li>
<li><a class="dropdown-item" href="#">Drop Down</a></li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="#">Other</a></li>
</ul>
</li>
</ul>
<ul class="navbar-nav">
<li class="nav-item navbar-distance">
//this i want to change this to Sign out and remove the register button as well
<a class="nav-link " href="/login">Sign in</a>
</li>
<li class="nav-item navbar-distance">
<a class="nav-link nav-border-without" href="#contacts">Talk to Us</a>
</li>
<li class="nav-item navbar-distance">
<a class="nav-link nav-border-with" href="/register">Register</a>
</li>
</ul>
</div>
</div>
</nav>
在呈现页面时,您可以传递 Boolean 值的身份验证状态,并根据该状态切换登录按钮
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.