Bài viết này cung cấp hướng dẫn chi tiết để cài đặt và sử dụng thư viện trek-captcha trên môi trường phát triển cục bộ.
1. Yêu cầu hệ thống
- Môi trường Node.js đã được cài đặt.
- Trình quản lý gói npm.
2. Các bước cài đặt
-
Tạo thư mục dự án mới:
mkdir captcha-demo cd captcha-demo -
Khởi tạo dự án npm:
npm init -y -
Cài đặt thư viện trek-captcha:
npm install trek-captcha --save
3. Tạo tệp tin ví dụ
Tạo một tệp tin có tên index.js với nội dung sau:
'use strict'
const fs = require('fs');
const generateCaptcha = require('trek-captcha');
async function createAndSaveCaptcha() {
// Tạo mã xác thực và dữ liệu ảnh
const { text, imageBuffer } = await generateCaptcha({
length: 5, // Độ dài mã xác thực (mặc định là 5)
stylePreset: -1 // Kiểu dáng ảnh (-1 là ngẫu nhiên)
});
// In mã xác thực ra console
console.log('Mã xác thực:', text);
// Lưu ảnh xác thực dưới dạng tệp GIF
fs.createWriteStream('generated_captcha.gif')
.on('finish', () => console.log('Đã lưu ảnh xác thực dưới dạng generated_captcha.gif'))
.end(imageBuffer);
}
createAndSaveCaptcha().catch(error => {
console.error('Đã xảy ra lỗi:', error);
});
4. Chạy ứng dụng
Thực thi tệp tin đã tạo:
node index.js
Sau khi chạy, bạn sẽ thấy:
- Mã xác thực được hiển thị trên bảng điều khiển.
- Một tệp ảnh
generated_captcha.gifđược tạo trong thư mục hiện tại.
5. Tích hợp vào ứng dụng Web (Ví dụ với Express)
Để sử dụng trek-captcha trong một ứng dụng web, bạn có thể tham khảo ví dụ sau với Express.js:
-
Cài đặt Express.js:
npm install express -
Tạo tệp tin
web_server.js:const express = require('express'); const captcha = require('trek-captcha'); const cookieParser = require('cookie-parser'); // Cần cài đặt cookie-parser const app = express(); app.use(cookieParser()); // Sử dụng cookie-parser middleware // Lưu trữ mã xác thực theo ID phiên const sessionStore = new Map(); // Trang chính hiển thị form nhập mã app.get('/', (req, res) => { res.send(` <h1>Ví dụ Mã Xác Thực</h1> <img src="/display-captcha" alt="Captcha Image" />
<form action="/check-code" method="GET"> <input type="text" name="userCode" placeholder="Nhập mã xác thực" /> <button type="submit">Kiểm tra</button> </form> `); }); // Endpoint để hiển thị ảnh mã xác thực app.get('/display-captcha', async (req, res) => { const { token, buffer } = await captcha(); // Tạo ID phiên duy nhất và lưu mã xác thực const sessionId = Date.now().toString(); sessionStore.set(sessionId, token); // Gửi ID phiên qua cookie cho client res.cookie('captchaSessionId', sessionId, { httpOnly: true }); // Thiết lập header và gửi ảnh res.setHeader('Content-Type', 'image/gif'); res.send(buffer); }); // Endpoint để kiểm tra mã xác thực app.get('/check-code', (req, res) => { const receivedSessionId = req.cookies.captchaSessionId; const submittedCode = req.query.userCode; const correctCode = sessionStore.get(receivedSessionId); if (submittedCode && correctCode && submittedCode.toLowerCase() === correctCode.toLowerCase()) { res.send('Xác thực thành công!'); } else { res.send('Xác thực thất bại. Vui lòng thử lại.'); } // Xóa mã xác thực đã sử dụng khỏi bộ nhớ if (receivedSessionId) { sessionStore.delete(receivedSessionId); } }); const PORT = 3000; app.listen(PORT, () => { console.log(`Máy chủ đang chạy tại http://localhost:${PORT}`); }); -
Chạy máy chủ Web:
node web_server.js -
Truy cập trang kiểm tra:
Mở trình duyệt và truy cập địa chỉ
http://localhost:3000.
6. Lưu ý
- Tùy chọn cấu hình: Bạn có thể tùy chỉnh các tham số như độ dài mã, kiểu dáng ảnh khi gọi hàm
captcha(). - Giá trị trả về: Hàm
captcha()trả về một đối tượng chứatoken(chuỗi mã xác thực) vàbuffer(dữ liệu nhị phân của ảnh). - Định dạng ảnh: Thư viện
trek-captchatạo ảnh mã xác thực ở định dạng GIF. - Ưu điểm: Thư viện được viết hoàn toàn bằng JavaScript, không yêu cầu cài đặt các thư viện phụ trợ như ImageMagick hay Canvas, phù hợp với môi trường Node.js.