簡體   English   中英

Express-session 和 SQL:我可以使用來自 connect-session-sequelize 的信息來提供登錄/注銷表嗎?

[英]Express-session and SQL: Can I use the info from connect-session-sequelize to feed a login/logout table?

我有一個小項目,它使用 express-session 和 connect-session-sequelize 處理用戶的登錄/注銷。 它按預期工作,但我現在想跟蹤用戶在網站上花費的時間。

起初,我認為這只是在每次用戶成功登錄時將包含用戶詳細信息的記錄添加到登錄/注銷表並在用戶注銷時更新該記錄的問題。 這並沒有按計划進行,因為有時用戶根本不會注銷。 他們關閉應用程序或讓它運行,在這兩種情況下。 下次他們登錄時,新記錄會添加到表中,我留下了他們以前使用情況的不完整記錄(即沒有注銷時間)。

然后我想也許我可以使用“connect-session-sequelize”創建的 Sessions 表來為我完成這些信息。 我想“如果我在 session 到期之前向 Sessions 表添加一個觸發器,我可以更新我的登錄/注銷表”。

問題是,為此,我需要一種方法來使用 Sessions 表中 session 記錄的“數據”字段中的信息,該文本字段的內容如下所示:

{
  "cookie:
  {
    "originalMaxAge":600000,
    "expires":"2021-03-08T02:02:02.002Z",
    "httpOnly":true,
    "path":"/"
  },
  "userOk":
  {
    "userEmail":"sample@hitmail.com",
    "loggedIn":true
  }
}

所以,我想我的問題是:

有沒有辦法創建一個刪除觸發器,該觸發器能夠從 Sessions 表中的該記錄中提取用戶電子郵件,並使用它來定位和更新我的登錄/注銷表中的適當記錄?

或者,我可以轉換 session 記錄並在 session 過期或用戶注銷時創建登錄/注銷記錄(因為在這兩種情況下,記錄都將從會話表中刪除)。

或者你們可以提出的任何其他建議,真的。

任何建議都將被欣然接受。

事實證明,MariaDB 具有正則表達式功能。 使用 REGEXP_SUBSTR 我能夠創建一個“刪除前”觸發器來解決我的問題。

CREATE DEFINER=`root`@`localhost` TRIGGER `updt_usage` BEFORE DELETE ON `eas_sessions` FOR EACH ROW
BEGIN
  UPDATE eas_usage SET logout = now() where user_email = REGEXP_SUBSTR(old.data,'([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)') and logout is null;
END

暫無
暫無

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

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