express中操作cookie和session

express中操作cookie和session

一、操作cookie

1、設置cookie(給客戶端設置‘cookie’):
	直接使用res.cookie('', '', {})
2、獲取cookie(需藉助第三方中間件):
	* 安裝: npm i cookie-parser
	* 引入:const cookieParser = require('cookie-parser')
	* 使用: app.use(cookieParser)
3、返回給客戶端一個cookie:
	* res.cookie('username', 'cookieId', {maxAge: 1000 * 60 * 60})
	備註:
		1.cookie是以:key-value的形式存在的,前兩個參數分別爲:key、value
		2.maxAge用於配置cookie有效期(單位:毫秒)
		3.如果不傳入maxAge配置對象,則爲會話cookie,隨着瀏覽器的關閉cookie自動會消失
		4.如果傳入maxAge,且maxAge不爲0,則cookie爲持久化cookie,即使用戶關閉瀏覽器,cookie也不會消失,直到過了有效期

4、接收客戶端傳遞過來的cookie:
	* req.cookie.xxx:獲取cookie上xxx屬性對應的值。
	* 備註:cookie-parser中間件會自動把客戶端發送過來的cookie解析到request對象上

二、操作session(cookie配合session)

1、下載安裝:npm i express-session --save 用於express中操作session
2、下載安裝:npm i connect-mongo --save 用於將session寫入數據庫 (session持久化)
3、引入express-session模塊:
	* const session = require("express-session")
4、引入connect-mongo模塊
	* const MongoStore = require("connect-mongo")(session)
5、編寫全局配置對象:
	app.use(session({
		name: 'useId', // 設置cookie的name,默認值是:connect.sid
		secret: 'userValue',	// 參與加密的字符串(又稱簽名)
		saveUninitialized: false,	// 是否在存儲內容之前創建會話
		reserve: true, // 是否在每次請求時,強制重新保存session,即使他們沒有變化
		store: new MongoStore({
			url: 'mongodb://localhost:27017/cookies_container',
			touchAfter: 24 * 3600	// 修改頻率(例: // 在24小時內只更新一次)
		}),
		cookie: {
			httpOnly: true,	// 開啓後前端無法通過JS操作cookie
			maxAge: 1000 * 30	// 設置cookie的過期時間
		}
	}));
	6、向session中添加一個xxxx,值爲yyy:req.session.xxxx = yyyy
	7、獲取session上的xxx屬性:const {xxxx} = req.session

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章