عدّ المحاولات الفاشلة
جزء من قسم المصادقة والأمان في رحلة Node.js على Coddy. الدرس 21 من 24.
يحتاج محدِّد محاولات تسجيل الدخول إلى تذكُّر المحاولات الفاشلة عبر الطلبات. يخزّن Map القيم تحت مفاتيح. استخدم اسم كل مستخدم مفتاحًا، حتى لا تؤثر الإخفاقات في حساب واحد على حساب آخر.
const counts = new Map();
const old = counts.get('bo') ?? 0;
counts.set('bo', old + 1);تعيد counts.get(key) القيمة undefined إذا لم يكن المفتاح موجودًا، لذا تبدأ القيمة الاحتياطية العد من الصفر. أبقِ Map خارج دالة الطلب للحفاظ عليها ما دام هذا الخادم قيد التشغيل. يمثّل كل طلب في هذا التدريب محاولة فاشلة. ستكون مدة الصلاحية خطوة منفصلة؛ إذ يواصل Map هذا العد حاليًا حتى يعيد زر «تشغيل» تشغيل الخادم.
التحدي
سهلهذا مشروع تدريبي صغير. إعداده جاهز؛ عدّل exercise.js فقط.
زِد count للمستخدم المقدَّم وأعِده في count. أرسل {"username":"ada"} باستخدام POST مرتين إلى /result: تكون القيمتان 1 ثم 2. يؤدي الإرسال باستخدام bo إلى القيمة 1؛ ويؤدي الإرسال باستخدام ada مرة أخرى إلى القيمة 3.
أنشئ Map بنفسك، وضعه في مكان يتيح للطلب الثاني الاطّلاع على القيمة الأولى. الضغط على «تشغيل» مرة أخرى يعيد تشغيل الخادم ويمسح هذا المخزن الموجود في الذاكرة.
جرّب بنفسك
// أنشئ مخزن العدادات في موضع يضمن بقاءه بين الطلبات.
export function exercise({ username }) {
return { count: 0 };
}
جميع دروس المصادقة والأمان
تدرّب بنفسك: Playground لـ Express