
RequestDelegate פרטי בשם _next ושדה מערך של כתובות חסומות. בדוגמה הרשימה מוגדרת ידנית כהדמיה. במערכת אמיתית היא תיטען ממסד הנתונים.RequestDelegate next ושומר אותו.Invoke, שמקבלת HttpContext, מוציאים את context.Connection.RemoteIpAddress וממירים למחרוזת.context.Response.StatusCode את הערך 403 (Forbidden) וכותבים הודעה בעזרת WriteAsync. הפונקציה מוגדרת async, ולא ממשיכים הלאה.await _next(context).app.UseMiddleware עם המחלקה החדשה.::1, שמשמעותה המחשב המקומי (localhost). כשמוסיפים אותה לרשימה, כל בקשה מקבלת את ההודעה שה-IP חסום, בכל route.הטקסט המלא של הדקות הראשונות בהרצאה «יצירת Short-Circuit Middleware» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בואו נעבור ונבנה שירקט מידלוויר, פשוט נצרף עוד קלאס לתיקיית מידלוויר ובואו נבצע את הקונספט של בלאק ליסטינג איי-פי אדרסס. יש לנו איי-פי בלאק ליסט מידלוויר, אנחנו רוצים לבנות קודם כל פרייבט read only, request delegate, underline, נקסט אנחנו רוצים שיהיה לנו
גם איזושהי רשימה של בלאק ליסט איי פי פרייבט ריד אונלי הנה יש לנו פה איזושהי סטרינג אנדרליין בלאק ליסט איי פי בואו נבנה סיטור שמקבל את אותו ריקווסט דלגייט נקסט וקודם כל שם את זה למעלה נקסט שווה נקסט מעולה וכאן אנחנו אמורים נניח לגשת לדאטאבייס ולהביא את הבלאק ליסט שלנו אבל אבל כרגע אנחנו לא מתעסקים יותר מדי
עם ה-IP שאנחנו רוצים לחסום באמת, אז נעשה הדמיה כאילו אנחנו הולכים לאנשהו ומביאים את אותה הרשימה. אז יש לנו פה את ה-Blacklist IPs שווה New String בצורה כזאת, וניתן כאן כל מיני ערכים.
יש לנו כרגע את הפונקציה הנוספת Public Task Invoke, שמקבלת HTTP קונטקסט. ועושה את הפעולה עצמה. קודם כל אנחנו רוצים לקבל את ה-IP אדרס של אותו יוזר. בואו ניקח סטרינג remote IP שווה קונטקסט.
לפי הקונטקסט אנחנו יכולים להיכנס לקונקשן ולהגיע ל-remote IP אדרס. נמיר אותו לסטרינג ויש לנו את ה-IP אדרס של אותו יוזר. פה אנחנו יכולים לשים סימן קריאה שהוא לא יצעק עלינו יותר מדי.
מעולה. ואנחנו רוצים לבצע איזושהי בדיקה אם ה-blacklist של ה-IP address contains את אותו remote IP אז אנחנו רוצים לחסום אנחנו בונים כרגע שייר צירקט אז קודם כל אנחנו פונים