สร้างระบบ Authentication ใน Express.js ด้วย JWT (JSON Web Tokens)
Backend Developer•16 ธันวาคม 2567•Security
Express.jsJWTAuthenticationSecurityNode.js
JWT (JSON Web Tokens) เป็นวิธีที่นิยมในการทำ Authentication สำหรับ API
ติดตั้ง
npm install jsonwebtoken bcryptjs
สร้าง Token
const jwt = require('jsonwebtoken'); // User login app.post('/api/login', async (req, res) => { // ... ตรวจสอบ user/password ... const user = { id: 1, username: 'test' }; const token = jwt.sign(user, 'YOUR_SECRET_KEY', { expiresIn: '1h' }); res.json({ token }); });
Middleware สำหรับตรวจสอบ Token
function authenticateToken(req, res, next) { const authHeader = req.headers['authorization']; const token = authHeader && authHeader.split(' ')[1]; if (token == null) return res.sendStatus(401); jwt.verify(token, 'YOUR_SECRET_KEY', (err, user) => { if (err) return res.sendStatus(403); req.user = user; next(); }); }
ปกป้อง Route
app.get('/api/profile', authenticateToken, (req, res) => { res.json(req.user); });
สรุป
JWT เป็นวิธีที่ Stateless และยืดหยุ่นในการทำ Authentication เหมาะสำหรับ Microservices และ Single Page Applications (SPAs)