簡體   English   中英

node.JS - express - connect-redis 如何刪除一條記錄

[英]node.JS - express - connect-redis how to delete a record

我這里是一個直接從快遞文件中得到的例子。

app.use(express.cookieParser());
app.use(express.session({ secret: "keyboard cat" }));
var RedisStore = require('connect-redis');
app.use(express.cookieParser());
app.use(express.session({ secret: "keyboard cat", store: new RedisStore }));

我所知道的是,這段代碼將創建一個 session id,並自動將 session id 存儲在 redis 數據庫中。 正確的?

現在,假設生成的 session_id 是 555444,當不再需要記錄時如何刪除它?

這些都行嗎?

store.destroy('555444', function(err) { ... })

或者

app.get('/', function(req, res) {
    if (req.session.sid == '555444') {
        req.session.destroy(function(err) { ... });
    }
})

我遇到了類似的情況,我想在注銷期間銷毀現有的 session 並清除 cookie。 這對我來說似乎很好用(商店是 RedisStore 的一個實例)。

app.get('/logout', function (req, res) {
  res.contentType('json');
  store.destroy(req.sessionID, function () {
    req.session.destroy(function () {
      res.clearCookie(sessionOpts.key, { path: '/' });
      res.send({ success: true });
    });
  });
});

I created an example on Github that uses , , , , and if you want to check it out. 我將它貢獻給了主干樣板回購。

在 Github 上叉它

  • socket.io 用於實時多用戶編輯
  • mongodb 用於存儲數據
  • redis 用於管理會話
  • redis pub/sub 用於記錄鎖定,因此兩個用戶不會嘗試編輯同一個 Todo

您只需將 sessionID 提供給 destroy 方法,這將從 Redis 數據庫中清除 session 密鑰。 這是對我有用的代碼:

req.session.destroy(req.sessionID, function () {
    // Passport logout
    req.logout();
});

每個 session 密鑰集在 redis 上過期,因此這些密鑰將在一段時間后自動過期(根據 session maxAge)。 快遞session

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM