req.session.user - 屬性「使用者」;在類型「Session」上不存在;嘗試使用快速會話傳遞會話資料時發生錯誤
P粉593536104
P粉593536104 2024-02-04 09:05:25
0
1
443

我正在嘗試製作一個簡單的登入表單,讓使用者登入網站,然後將他們的會話資料儲存到會話 cookie 中。我正在使用express-session,在他們的文檔中它給出了這個作為設定的範例:

app.post('/login', express.urlencoded({ extended: false }), function (req, res) {
  // login logic to validate req.body.user and req.body.pass
  // would be implemented here. for this example any combo works

    // store user information in session, typically a user id
    req.session.user = req.body.user

    // save the session before redirection to ensure page
    // load does not happen before session is saved
    req.session.save(function (err) {
      if (err) return next(err)
      res.redirect('/')
    })
  })
})

但在我的程式碼中,我不斷在「req.session.user」部分收到錯誤,其中顯示:「屬性「使用者」在「會話和部分」類型上不存在」 ,即使我使用的是Express-Session 文檔中完全相同的程式碼。

我遵循文件中的所有說明,並將其放在程式頂部:

import session from 'express-session';

app.set('trust proxy', 1);

app.use(session({  
  name: `First_test`,
  secret: 'secret_text', 
  saveUninitialized: true, 
  resave: true,
  cookie: { 
    secure: false, 
    maxAge: 960000 
  } 
}));

調試時我可以看到 req.session 內部確實沒有「user」屬性。

我已經搜尋了 google 和 stackoverflow 但沒有找到解決方案。我很可能錯過了一些小步驟,我希望這裡有人可以幫助教育我。

感謝您事先提供的協助。

P粉593536104
P粉593536104

全部回覆(1)
P粉203648742

@types/express-session套件中我們可以看到

/**
     * This interface allows you to declare additional properties on your session object using [declaration merging](https://www.typescriptlang.org/docs/handbook/declaration-merging.html).
     *
     * @example
     * declare module 'express-session' {
     *     interface SessionData {
     *         views: number;
     *     }
     * }
     *
     */
    interface SessionData {
        cookie: Cookie;
    }

因此,您應該在會話物件上宣告 user 屬性,如下所示:

declare module 'express-session' {
  interface SessionData {
    user: string;
  }
}

app.post('/login', express.urlencoded({ extended: false }), function (req, res) {
  req.session.user = req.body.user
})

軟體套件版本:"express-session": "^1.17.1"

#
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板