1、express如何使用session與cookie : https://www.jianshu.com/p/1839e482274e 或 https://www.cnblogs.com/chyingp/p/express-session.html(推薦,比較完整)
2、cookie 可以多條設置,類似 localstorage 的存儲。設置時相同名稱 會被覆蓋掉。
res.cookie('isFirst', 1, { maxAge: 6000 * 1000, singed: true}); res.cookie('isFirst2', 2, { maxAge: 6000 * 1000, singed: true}); res.cookie('isFirst', 3, { maxAge: 6000 * 1000, singed: true});
3、express 中調用 session 方法,會創建一條 cookie 的,這個session的信息對應這條cookie的信息的。
app.use(session({ name: 'test_session', // 這里是cookie的name,默認是connect.sid secret: 'my_session_secret', // 建議使用 128 個字符的隨機字符串 resave: true, saveUninitialized: false, cookie: { maxAge: 6000 * 1000, httpOnly: true } }));
req.session.isFirst = 1; // 程序中必須要至少一個 session 字段值,不然 session 不會啟用; session設置的字段,瀏覽器是沒有數據,只有對應的sessionID值。(這個是經過自己方法測試總結出來的)
總結:
1、session與cookie 的使用,可以 定位某個用戶(判斷是否登錄過)。不使用session、cookie也可以實現 定位某個用戶,使用token實現。
2、使用 token登錄驗證機制 :https://blog.csdn.net/weixin_42237752/article/details/88655511
給每個接口傳遞一個userID(token值) 參數,因為userID是通過接口獲取的,且每次獲取是不一樣的,所以這個只能獲取一次,緩存下來。給其它頁面使用。兩種方案各有優缺點。
3、現在基本都使用tooken而不用session了: https://blog.csdn.net/mydistance/article/details/84545768
一般單台服務器使用session,分布式服務器(多台服務器)一般不用session。因為session只是保存在一台主機內存中,其它的主機是沒有;要讓所有的主機同步或共享session,還要另外處理。如果用戶多了session占用的內存會很大。所以tooken的優勢比較大
【知識點補充】 前端判斷用戶登錄狀態方法:
1、cookie 和 token 的區別:
a、兩者cookie是http請求頭內置(標准)的字段;而token是人手動添加到頭部的字段【類似一個普通變量】。
b、當存在一個 cookie,該 cookie 的值會在隨后的每次請求中被發送至服務器【即之后的請求都會帶上這個cookie值】。除非手動設置不 要帶上這么cookie。 https://www.w3cschool.cn/pegosu/pbjagozt.html
c、而 token 只是請求頭的一個普通變量。只有在當前請求設置了這個變量,才會攜帶在請求頭上。后面的請求,只要沒有手動設置,都不會再攜帶這個字段的。
總結:將 token存儲到 cookie中,這樣 token 值就有 cookie 的特點。前端手動設置一次,之后的請求會自動攜帶;可以設置cookie的有效期。 https://www.cnblogs.com/BruceV/p/11956676.html
2、前端判斷用戶登錄狀態方法:https://www.cnblogs.com/momo798/p/11663349.html