Đế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ủ.
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
1Mật khẩu
Byte và văn bản hexTạo khóa từ mật khẩuSalt mớiKhông bao giờ lưu mật khẩuSo sánh các byte của khóaKiểm tra mật khẩuQuy tắc đăng ký4Quyền sở hữu và an toàn
Chỉ ghi chú của bạnVai trò quản trị viên2Phiên làm việc và cookie
Ghi nhớ bằng cookieTra cứu phiênPhiên đăng nhậpĐịnh tuyến sau khi đăng nhậpTự luyện tập: Playground Express