ตัวอย่างการใช้ jwt ใน next.js
Created At :
Views 👀 :
การใช้ JSON Web Tokens (JWT) ใน Next.js เป็นวิธีที่ดีในการจัดการระบบการตรวจสอบสิทธิ์และการรักษาสถานะการล็อกอินของผู้ใช้. ตัวอย่างต่อไปนี้จะแสดงวิธีการสร้างและยืนยัน JWT ใน Next.js:
- ติดตั้งแพ็กเกจที่จำเป็น: เริ่มต้นโดยติดตั้งแพ็กเกจที่จำเป็น เช่น
jsonwebtoken
เพื่อสร้างและยืนยัน JWT และ cookie
เพื่อจัดการคุกกี้:
1
| npm install jsonwebtoken cookie
|
หรือ
1
| yarn add jsonwebtoken cookie
|
- สร้างฟังก์ชันสร้างและสร้าง JWT: สร้างฟังก์ชันสำหรับสร้าง JWT เมื่อผู้ใช้ล็อกอิน:
1 2 3 4 5 6 7 8 9
| import { sign } from 'jsonwebtoken';
export const createToken = (userId) => { const token = sign({ userId }, 'your-secret-key', { expiresIn: '1h', }); return token; };
|
- สร้าง API route สำหรับการล็อกอินและสร้าง JWT: สร้าง API route ที่ใช้สำหรับการล็อกอินและสร้าง JWT เมื่อการล็อกอินสำเร็จ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import { createToken } from '../../utils/auth';
export default function handler(req, res) { if (req.method === 'POST') {
const userId = 1; const token = createToken(userId);
res.setHeader('Set-Cookie', `token=${token}; HttpOnly; Secure; SameSite=Strict`); res.status(200).json({ message: 'Login successful' }); } else { res.status(405).end(); } }
|
- สร้าง middleware สำหรับตรวจสอบ JWT: สร้าง middleware ที่ใช้สำหรับตรวจสอบ JWT ในการร้อยเอสต์ที่ต้องการการตรวจสอบสิทธิ์:
1 2 3 4 5 6 7 8 9 10 11
| import { verify } from 'jsonwebtoken';
export const verifyToken = (token) => { try { const decoded = verify(token, 'your-secret-key'); return decoded.userId; } catch (error) { return null; } };
|
- สร้าง API route สำหรับการตรวจสอบสิทธิ์: สร้าง API route สำหรับการตรวจสอบสิทธิ์การเข้าถึงหน้าหรือแหล่งข้อมูลที่ต้องการสิทธิ์:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| import { verifyToken } from '../../utils/auth';
export default function handler(req, res) { if (req.method === 'GET') { const token = req.cookies.token;
if (!token) { return res.status(401).json({ message: 'Unauthorized' }); }
const userId = verifyToken(token);
if (!userId) { return res.status(401).json({ message: 'Invalid token' }); }
return res.status(200).json({ message: 'Access granted' }); } else { res.status(405).end(); } }
|
- สร้างหน้าที่ต้องการสิทธิ์: สร้างหน้าหรือเร้าเริ่มต้นที่คุณต้องการสิทธิ์การเข้าถึง และใช้ middleware สำหรับการตรวจสอบสิทธิ์:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| import { useEffect, useState } from 'react'; import { verifyToken } from '../utils/auth';
function Protected() { const [message, setMessage] = useState('');
useEffect(() => { const token = localStorage.getItem('token');
if (!token) { setMessage('Unauthorized'); return; }
const userId = verifyToken(token);
if (!userId) { setMessage('Invalid token'); return; }
setMessage('Access granted'); }, []);
return ( <div> <h1>Protected Page</h1> <p>{message}</p> </div> ); }
export default Protected;
|
- **ตัวอย่างการใช้งา
นในหน้า**: ในหน้าที่ต้องการสิทธิ์การเข้าถึง คุณสามารถใช้ JWT ใน localStorage หรือคุกกี้เพื่อส่งค่า token ในคำขอ GET ไปยัง API route ที่ตรวจสอบสิทธิ์.
นี่คือขั้นตอนพื้นฐานในการใช้ JWT ใน Next.js เพื่อการตรวจสอบสิทธิ์และรักษาสถานะการล็อกอินของผู้ใช้ โปรดระวังความปลอดภัยและดำเนินการตรวจสอบและการยืนยัน JWT อย่างถูกต้องเพื่อป้องกันการแอบอ้างปลอมและการบุกรุก.