Menu
CoddyTech

Đếm số lần thử thất bại

Thuộc phần Xác thực và bảo mật trong hành trình Node.js của Coddy. Bài học 21 trên 24.

Bộ giới hạn đăng nhập cần ghi nhớ số lần thử thất bại qua các yêu cầu. Map lưu giá trị theo khóa. Dùng từng tên người dùng làm khóa để số lần thất bại của tài khoản này không ảnh hưởng đến tài khoản khác.

const counts = new Map();
const old = counts.get('bo') ?? 0;
counts.set('bo', old + 1);

counts.get(key) trả về undefined nếu không tìm thấy khóa, vì vậy giá trị dự phòng giúp bộ đếm bắt đầu từ 0. Đặt Map bên ngoài hàm xử lý yêu cầu để giữ nguyên dữ liệu trong khi máy chủ này chạy. Mỗi yêu cầu trong bài luyện tập này tương ứng với một lần thử thất bại. Việc hết hạn sẽ là một bước riêng; hiện tại, Map này tiếp tục đếm cho đến khi nút Chạy khởi động lại máy chủ.

challenge icon

Thử thách

Dễ

Đây là một dự án luyện tập nhỏ. Phần thiết lập đã có sẵn, chỉ chỉnh sửa exercise.js.

Tăng count cho username được cung cấp và trả về giá trị đó trong count. Gửi POST {"username":"ada"} hai lần đến /result: count lần lượt là 1 rồi 2. Gửi bo sẽ cho kết quả 1; gửi ada lần nữa sẽ cho kết quả 3.

Tự tạo Map và đặt nó ở vị trí để yêu cầu thứ hai có thể thấy count đầu tiên. Nhấn Chạy lần nữa sẽ khởi động lại máy chủ và xóa kho lưu trữ trong bộ nhớ này.

Tự làm thử

// Tạo nơi lưu trữ số lần đếm để dữ liệu không mất đi giữa các yêu cầu.
export function exercise({ username }) {
    return { count: 0 };
}

Tất cả bài học trong Xác thực và bảo mật

Tự luyện tập: Playground Express