[英]change and refresh session data in Node.js and express-session
[英]How to store user data into node js express-session
我在nodeJS上使用express和express-session與 mysql 。 我也可以設置 cookie 和會話。
這是我的代碼:
app.use(cookieParser('3CCC4ACD-6ED1-4844-9217-82131BDCB239'));
session({resave: true, saveUninitialized: true, secret: '2C44774A-D649-4D44-9535-46E296EF984F', cookie: { maxAge: 600000 }}));
我可以在瀏覽器上看到一個名為connect.id的 cookie 已被設置。 但是現在我無法理解從 mysql 數據庫中獲取用戶 ID 和用戶名后如何存儲它們。
已經谷歌搜索但無法找到解決方案。 請幫助我。 謝謝!!
這是設置會話的方法
const session = require('express-session');
const MongoDBStore = require('connect-mongodb-session')(session);
const store = new MongoDBStore({
uri: MONGODB_URI,
collection: 'sessions'
});
app.use(session({
secret: 'secret string',
resave: false,
saveUninitialized: false
store: store, /* store session data in mongodb */
cookie: { /* can add cookie related info here */ }
}));
為了在會話中存儲數據,您只需執行以下操作,
req.session.user = user;
req.session.isLoggedIn = true;
訪問方式相同。 這些值將使用會話 cookie 作為查找值存儲在服務器端。
您不會將這些存儲在 cookie 中,在該用戶第一次登錄時,您將 cookieID 與數據庫中的該用戶名鏈接,現在每次用戶連接時,您首先在數據庫中查找 cookieID,如果它不存在,然后您發送他需要登錄的用戶。 如果數據庫中有注冊,那么您就知道這是受信任的用戶。
您可以使用用戶名作為鍵,因此如果相同的用戶名帶有不同的 cookieID,它會被覆蓋,無論如何,您最好在數據庫中保存一個時間戳,並刪除那些確定為舊的寄存器。
這基本上是會話所做的,它在 cookie 中有一個 id 並保存與該 id 相關的變量,我在快速會話方面有過糟糕的經歷,所以我更喜歡使用 cookie 並自己處理會話,這是我的推薦方式。
在節點中,獲取 cookie:
req.cookie.cookieName
並設置一個cookie:
res.cookie('cookieName', cookieValue);
請永遠不要將私人數據保存在cookieValue
因為它可能是隱形的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.