【问题标题】:Express.js session variable doesn't refreshExpress.js 会话变量不刷新
【发布时间】: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


    【解决方案1】:

    您需要销毁会话

    req.session.destroy();
    

    【讨论】:

      猜你喜欢
      • 2015-07-02
      • 2018-04-16
      • 2014-11-27
      • 1970-01-01
      • 2015-10-10
      • 2014-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多