首页 > 解决方案 > 关于 Express-session 中间件的一般疑问

问题描述

我是一个完全的网络初学者,我有很多稳定的疑问,希望你不会介意回答。

问题 1:先生,我的 MongoDB 存储如何在 max-age 或 expiry time 之后清除会话?connect-mongo 的驱动程序是否有一些异步函数,当会话过期或 MongoDB 服务器对会话集合具有特殊含义时,该函数被称为事件,或者 MongoDB 具有在一些异步的帮助下这样做的内置方法功能和所有?我出于学习目的手动实现了这一点,这很有趣,但是这件事在 Express-session 部分是如何发生的,我感到惊讶和困惑。谁来处理到期的事情?

问题2:先生,我不明白重新保存的东西。我已经做了很多谷歌搜索,并开始了解重新保存和 saveUninitialsied。我知道 saveUninitialised 是什么意思。它说除非并且直到 cookie 被修改,否则不要保存新会话。很酷的事情。然后人们继续解释关于 StackOverflow 和 touch 方法的重新保存,但我没有从那里得到。如果数据库没有初始化触摸命令,这意味着什么?重新保存和其他事情也会发生在数据库上或从我的服务器的命令到数据库。这是我在数据库上的服务器命令,对吗?或者引擎盖下发生了什么事。

问题 3:先生,如果我想在 express-session 中向用户发送超过 1 个 cookie,这可能吗?这是一种专业做法吗?或者我应该使用带有 res.cookie 的 cookie 解析来发送超过 1 个 cookie?另外,我可以将 connect.sid 的名称更改为其他名称,这是我的下一个问题吗?

Ques4:先生,我想知道我是否可以将更多的键值对作为键和 JSON 存储在 cookie 中,所以我做了这样的事情,但据我检查,数据并未存储在 MongoDB 中。那么数据是否存储在cookie中?

//creating the session
app.use(session({
    name: 'auth cookie', //Name of the cookie
    store: new MongoStore({ mongooseConnection: mongoose.connection }), //To store session-store as Mongoose,
    secret: process.env.COOKIE_SECRET, //Used to sign the cookie
    saveUninitialized: false, //If the user bounces off, don't create a session
    resave: false, //Touch method is implemented by MongoDB. I want to know more about this option
    cookie: {
        path: '/', //Where the cookies would be saved
        httpOnly: true, //Javascript on client cannot get access to cookies. Good for security.
        secure: false, //http service. Not strictly HSTS or HTTPS
        maxAge: 60*1000, //1 minute
        sameSite: true, //No XSRF
        name: 'Hobbit Holet', //This is how values are stored in the cookie for furture use
        age: '21' //This is how values are stored in the cookie for furture use
    }
}));

问题5:先生,如您所见,我有一个秘密。现在我可以在浏览器上看到 cookie。现在 cookie 有一些数据,我有密钥。因此,出于调试目的并且仅在开发模式下,有没有一种方法可以通过我在这里拥有的密钥解密 cookie 中的数据?如果有办法,请在发送前分享用于散列或加密数据的算法。

谢谢大家,如果我写错了什么或在我提出问题时犯了任何错误,我愿意接受建设性的批评。我希望能得到帮助,因为我今天被困在这里。

标签: mongodbexpresssessioncookiesexpress-session

解决方案


推荐阅读