【发布时间】:2022-11-20 23:42:15
【问题描述】:
`
//logout
router.get("/logout", (req, res) => {
res.render("logout")
req.session.username = undefined
req.session.loggedIn = false
})
//login
router.get("/login", (req, res) => {
res.render("login")
})
router.post("/login", (req, res) => {
let data = JSON.parse(fs.readFileSync("./data.json"))
let exists = false
data.users.forEach(user => {
if(user.name === req.body.username){
exists = true
if(user.password === req.body.password){
req.session.loggedIn = true
req.session.username = user.name
res.redirect("/")
}else res.send("Incorrect password!")
}
})
if(exists === false){
res.send("There is no account with that username.")
}
})
//register
router.get("/register", (req, res) => {
res.render("register")
})
router.post("/register", (req, res) => {
let data = JSON.parse(fs.readFileSync("./data.json"))
let exists = false
data.users.forEach(user => {
if(user.name === req.body.username){
res.send("Please choose a different username!")
exists = true
}
})
if(exists === false){
let template = {
name: req.body.username,
password: req.body.password
}
data.users.push(template)
fs.writeFileSync("./data.json", JSON.stringify(data, null, 2))
res.send("Registered successfully!")
}
})
//home
router.get("/", (req, res) => {
console.log(req.session.loggedIn)
if(req.session.loggedIn === true){
res.render("index", {name: req.session.username})
}else res.render("index", {name: "Guest"})
})
` 所以,这是我的代码。我想编写一个登录/注册/主页/注销系统的代码,但我在这里遇到了一个小问题。当我第一次加载主页时,它说我以访客身份登录(这是应该的)。登录后,它会显示我的用户名(也应该如此)。但是,当我注销并 console.log loggedIn 变量时,它显示 false 并且在主页上再次显示 true 。它仍然显示我的用户名。主页上的 loggedIn 变量应该为 false。谁能帮我?
当我注销时,我希望主页上的变量为 false。我试图改变函数的顺序但没有任何帮助。
【问题讨论】:
标签: node.js express express-session