PracticU

יצירת Short-Circuit Middleware

בלי כתוביותעם כתוביות
PracticU › קורס דוט-נט - NET Core. - עם Rest API › יצירת Short-Circuit Middleware
יצירת Short-Circuit Middleware
הרצאה על Middleware מסוג Short-Circuit שחוסם בקשות לפי כתובת IP, כדוגמה לרשימה שחורה (blacklist).
השלבים העיקריים
1. המחלקה: מוסיפים לתיקיית Middleware מחלקה חדשה בשם IP Blacklist Middleware, עם RequestDelegate פרטי בשם _next ושדה מערך של כתובות חסומות. בדוגמה הרשימה מוגדרת ידנית כהדמיה. במערכת אמיתית היא תיטען ממסד הנתונים.
2. קונסטרקטור: מקבל את ה-RequestDelegate next ושומר אותו.
3. קבלת הכתובת: בפונקציה Invoke, שמקבלת HttpContext, מוציאים את context.Connection.RemoteIpAddress וממירים למחרוזת.
4. החסימה: אם הרשימה מכילה את הכתובת, מגדירים ל-context.Response.StatusCode את הערך 403 (Forbidden) וכותבים הודעה בעזרת WriteAsync. הפונקציה מוגדרת async, ולא ממשיכים הלאה.
5. המשך הזרימה: אם הכתובת לא ברשימה, מבצעים await _next(context).
6. רישום: ב-Program מוסיפים app.UseMiddleware עם המחלקה החדשה.
7. בדיקה: בתחילה הכתובת הפיקטיבית ברשימה לא חוסמת דבר. הדפסת הכתובת לקונסול הראתה ::1, שמשמעותה המחשב המקומי (localhost). כשמוסיפים אותה לרשימה, כל בקשה מקבלת את ההודעה שה-IP חסום, בכל route.
שימו לב
- הדפסת הכתובת לקונסול הייתה לצורך בדיקה בלבד, ויש להסיר אותה.
כך נבנה Middleware ש"מקצר" את הזרימה ומונע מהבקשה להגיע לשאר המערכת.
השיעור הבא בקורס: יצירת Pass-Through Filter
מילון מושגים:
Middleware – שכבת תוכנה שמתווכת בין רכיבים ומטפלת בבקשות בדרכן, למשל לאימות, רישום לוג או עיבוד נתונים.
בקשה – פנייה שלקוח שולח לשרת כדי לקבל מידע או לבצע פעולה; השרת מחזיר עליה תגובה.
מערך – מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
בנאי – מתודה מיוחדת שמופעלת אוטומטית בעת יצירת אובייקט ממחלקה, ומאתחלת את ערכיו ההתחלתיים.
תגובה – המידע שהשרת מחזיר ללקוח בתשובה לבקשה, הכולל בדרך כלל נתונים וקוד סטטוס.
אסינכרוני – אופן פעולה שבו פעולה ארוכה רצה ברקע והתוכנית ממשיכה בלי להמתין לה, ומטופלת כשתסתיים.
Localhost – שם המפנה למחשב המקומי עצמו (כתובת 127.0.0.1), המשמש לבדיקת שירותים הרצים על אותו מחשב.
ראוט – הגדרה שמקשרת כתובת בקשה לקוד שמטפל בה באפליקציה; גם מסלול שדרכו עוברות חבילות ברשת.

פרקי ההרצאה: יצירת Short-Circuit Middleware

  1. 00:00

    חסימת כתובות IP עם Middleware

  2. 00:42

    קבלת רשימת ה-Blacklist

  3. 01:20

    קריאת ה-IP של המשתמש

  4. 01:56

    בדיקת חסימה ועצירת הזרימה

תמלול ההרצאה: יצירת Short-Circuit Middleware

הטקסט המלא של הדקות הראשונות בהרצאה «יצירת Short-Circuit Middleware» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    בואו נעבור ונבנה שירקט מידלוויר, פשוט נצרף עוד קלאס לתיקיית מידלוויר ובואו נבצע את הקונספט של בלאק ליסטינג איי-פי אדרסס. יש לנו איי-פי בלאק ליסט מידלוויר, אנחנו רוצים לבנות קודם כל פרייבט read only, request delegate, underline, נקסט אנחנו רוצים שיהיה לנו

  2. 00:31

    גם איזושהי רשימה של בלאק ליסט איי פי פרייבט ריד אונלי הנה יש לנו פה איזושהי סטרינג אנדרליין בלאק ליסט איי פי בואו נבנה סיטור שמקבל את אותו ריקווסט דלגייט נקסט וקודם כל שם את זה למעלה נקסט שווה נקסט מעולה וכאן אנחנו אמורים נניח לגשת לדאטאבייס ולהביא את הבלאק ליסט שלנו אבל אבל כרגע אנחנו לא מתעסקים יותר מדי

  3. 01:00

    עם ה-IP שאנחנו רוצים לחסום באמת, אז נעשה הדמיה כאילו אנחנו הולכים לאנשהו ומביאים את אותה הרשימה. אז יש לנו פה את ה-Blacklist IPs שווה New String בצורה כזאת, וניתן כאן כל מיני ערכים.

  4. 01:17

    יש לנו כרגע את הפונקציה הנוספת Public Task Invoke, שמקבלת HTTP קונטקסט. ועושה את הפעולה עצמה. קודם כל אנחנו רוצים לקבל את ה-IP אדרס של אותו יוזר. בואו ניקח סטרינג remote IP שווה קונטקסט.

  5. 01:40

    לפי הקונטקסט אנחנו יכולים להיכנס לקונקשן ולהגיע ל-remote IP אדרס. נמיר אותו לסטרינג ויש לנו את ה-IP אדרס של אותו יוזר. פה אנחנו יכולים לשים סימן קריאה שהוא לא יצעק עלינו יותר מדי.

  6. 01:55

    מעולה. ואנחנו רוצים לבצע איזושהי בדיקה אם ה-blacklist של ה-IP address contains את אותו remote IP אז אנחנו רוצים לחסום אנחנו בונים כרגע שייר צירקט אז קודם כל אנחנו פונים

לקורס המלא: קורס דוט-נט - NET Core. - עם Rest API

ההרצאה הקודמת: יצירת Pass-Through Middleware

ההרצאה הבאה: יצירת Pass-Through Filter

הרצאות קשורות מקורסים אחרים

  • רידקס - יצירת Middleware
  • Express Middleware

קורסים נוספים במסלול

  • קורס Entity Framework Core - עבודה עם מסד נתונים בדוט-נט
  • קורס ASP.NET
  • קורס MVC
  • קורס Git ו-GitHub עם Visual Studio