node.js - 如何使用快速 session 为普通用户和管理员用户创建两个不同的 session ?

标签 node.js session-cookies express-session

在我的应用程序中,有两种类型的用户登录:普通用户和管理员用户。现在,我对两种类型的用户都使用单个 session ,并且我的应用程序表现异常。当两个或更多用户登录时,有时某些用户会意外注销。

我认为这个问题是由于单个 session 而发生的,我尝试分成两个不同的 session ,

//manage session for normal user
app.use('/', session({
    key: USER_SESS_NAME, 
    resave: false,
    saveUninitialized: false,
    secret: SESSION_SECRET,
    cookie: {
        expires: 600000
    }
}));


//manage session for admin
app.use('/admin', session({
    key: ADMIN_SESS_NAME, 
    resave: false,
    saveUninitialized: false,
    secret: SESSION_SECRET,
    cookie: {
        expires: 600000
    }
}));


此外,普通用户的所有路由都以“/”开头,而管理员的所有路由都以“/admin”开头,因此我按照上面的方式分割 session 。

我不知道这是否是创建两个不同 session 的正确方法。此外,管理员 session 也未按预期工作。当我以普通用户身份注销时,我也会从管理员中注销。处理这些 session 的最佳方式是什么以及注销时我们需要做什么?

最佳答案

对所有用户类型使用单个 session 。最好的方法是在 session 中使用帐户类型来区分用户。

每当用户注册时,请设置普通用户和管理员用户的值。在您的 session key 中包含帐户类型。

格式应如下所示:

secret: YOUR_SECRET.usertype

这样你就可以用点来分割它并确定用户类型。这样您将拥有一个带有用户类型的 session 。

关于node.js - 如何使用快速 session 为普通用户和管理员用户创建两个不同的 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55917270/

相关文章:

node.js - Mongodb、mongoose——动态设置TTL时间

javascript - 计算数字组的可能组合

node.js - MongoNetworkError : failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127. 0.0.1:27017]

Android 到 Drupal cookie 传输 Q2

javascript - 获取 express 编码的 cookie 作为 header 值

javascript - React-native Redux socket.io session 认证

node.js - Express-Session、Connect-Redis 和 einaros/ws

node.js - Express Session 可以使用负载均衡器创建相同的 session ID

express - 不同口岸的本地 Passport 授权

node.js - JupyterLab plotly 扩展错误 : Cannot find module jupyter\lab\staging\node_modules\ejs\postinstall. js