เกริ่นนำ
Cookie และ Session เป็นเทคโนโลยีที่ใช้ในการเก็บข้อมูลบนฝั่ง Client และฝั่ง Server การเลือกใช้งาน Cookie หรือ Session ขึ้นอยู่กับความต้องการและข้อจำกัดต่าง ๆ ในการพัฒนาแต่โดยรวมแล้ว Cookie และ Session ใน Express มีประโยชน์ดังต่อไปนี้
- การเข้าสู่ระบบและการจัดการผู้ใช้: Cookie และ Session สามารถใช้เพื่อเก็บข้อมูลเกี่ยวกับผู้ใช้ เช่น ชื่อผู้ใช้ รหัสผ่าน หรือข้อมูลอื่น ๆ ที่จำเป็นสำหรับการเข้าสู่ระบบ ซึ่งช่วยให้ผู้ใช้สามารถเข้าสู่ระบบและใช้งาน API ได้โดยไม่ต้องป้อนข้อมูลซ้ำทุกครั้ง
- การติดตามผู้ใช้: Cookie และ Session สามารถใช้เพื่อติดตามการใช้งานของผู้ใช้ ซึ่งช่วยให้เราเข้าใจพฤติกรรมของผู้ใช้และปรับปรุงประสบการณ์การใช้งาน API
- การปรับปรุงประสิทธิภาพ: Cookie และ Session สามารถใช้เพื่อจัดเก็บข้อมูลชั่วคราว ซึ่งช่วยลดจำนวนคำขอที่ส่งไปยัง API จริง ซึ่งช่วยให้ปรับปรุงประสิทธิภาพของ API
การใช้งาน Cookie ใน Express
ใน Express เราสามารถใช้งาน Cookie ได้โดยการติดตั้ง middleware ของ cookie-parser ดังนี้
npm install cookie-parser
จากนั้นเพิ่ม middleware ของ cookie-parser ลงในไฟล์ server.js ดังนี้
const express = require('express');
const cookieParser = require('cookie-parser');
const app = express();
app.use(cookieParser());
app.get('/', (req, res) => {
// แสดงข้อมูล Cookie
res.send(req.cookies);
});
app.listen(3000);
ตัวอย่างการใช้งาน Cookie ใน Express เช่น
app.get("/setCookies", (req, res) => {
// res.cookies.[ชื่อcookie] เมื่อมีการเข้ามาในเว็บ ทาง server จะ response ส่ง cookies ออกไป
res.cookie("username", "john@doe", {
maxAge: 3600 // กำหนด timeout หน่วยเป็น millisecond
});
// หากต้องการให้ API ตัดการเชื่อมต่อใส่คำสั่ง res.end() เพื่อตัดการเชื่อมทันทีไม่อย่างนั้นจะโหลดจนกว่าจะ timeout
console.log(req.cookies["username"]);
res.end();
});
การใช้งาน Session ใน Express
ใน Express เราสามารถใช้งาน Session ได้โดยการติดตั้ง middleware ของ express-session ดังนี้
npm install express-session
จากนั้นเพิ่ม middleware ของ express-session ลงในไฟล์ server.js ดังนี้
const express = require('express');
const session = require('express-session');
const app = express();
// กำหนดค่า Session
const sessionConfig = {
secret: 'secret',
resave: true, // บันทึก session ทุกครั้งที่มีการร้องขอ
saveUninitialized: true, // บันทึก session ทุกครั้งที่มีการร้องขอ โดยไม่คำนึงว่า session จะมีข้อมูลหรือไม่
maxAge: 3600,
};
app.use(session(sessionConfig));
app.get('/', (req, res) => {
// แสดงข้อมูล Session
res.send(req.session);
});
app.listen(3000);
ตัวอย่างการใช้งาน Session ใน Express เช่น
app.get('/login', (req, res) => {
// ตั้งค่า Session
req.session.username = 'johndoe';
req.session.password = 'secret';
// แสดงข้อความแจ้ง
res.send('เข้าสู่ระบบสำเร็จ');
});
ความแตกต่างระหว่าง Cookie และ Session
คุณสมบัติ | Cookie | Session |
---|---|---|
ตำแหน่งที่เก็บข้อมูล | เบราว์เซอร์ของผู้ใช้ | เซิร์ฟเวอร์ของผู้ให้บริการ |
ความปลอดภัย | ต่ำกว่า | สูงกว่า |
ระยะเวลา | อยู่ได้นานหลายเดือนหรือหลายปี | อยู่ได้เพียงไม่กี่นาทีหรือหลายชั่วโมง |
การใช้งาน | ทั่วไป | เฉพาะบางกรณี |
อ้างอิง
cookie-parser, สืบค้นเมื่อ 10 ตุลาคม 2566
จาก: https://expressjs.com/en/resources/middleware/cookie-parser.html
cookie-parser.js, สืบค้นเมื่อ 10 ตุลาคม 2566
จาก: https://gist.github.com/wdrdres3qew5ts21/c4ea4227a576aec9b5cbd7913832b90e
express-session, สืบค้นเมื่อ 10 ตุลาคม 2566
จาก: https://expressjs.com/en/resources/middleware/session.html