PracticU

הגנה על אתר עם שם וסיסמה בריאקט - Blocking Component

בלי כתוביותעם כתוביות
PracticU › קורס ריאקט - React › הגנה על אתר עם שם וסיסמה בריאקט - Blocking Component
מילון מושגים:
סיסמה - מחרוזת תווים סודית שמשמשת לאימות זהות המשתמש בעת כניסה למערכת. ככל שהיא ארוכה ומורכבת יותר, כך קשה יותר לנחש אותה.
רכיב - יחידת בניין עצמאית וניתנת לשימוש חוזר בתוך מערכת או ממשק משתמש, שאחראית על חלק מוגדר מהתפקוד.
צד לקוח - החלק של היישום שרץ בדפדפן ומולו המשתמש מתקשר, הכולל את התצוגה והאינטראקציה.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
ממשק - נקודת מגע בין רכיבים: ממשק משתמש שבו אדם מפעיל תוכנה, או ממשק תכנותי שמגדיר אילו פעולות רכיב אחד חושף לאחר.
חבילה - אוסף ארוז של קוד, ספריות או קבצים המופץ כיחידה אחת ומותקן בעזרת מנהל חבילות.
באג - תקלה או שגיאה בקוד שגורמת לתוכנה להתנהג בניגוד למצופה.
טוקן - פיסת מידע שמשמשת לאימות או להרשאה, שהמערכת מנפיקה ללקוח ומוצגת בבקשות הבאות במקום סיסמה.

הגנה על אתר עם שם וסיסמה בריאקט - Blocking Component
חסימת קומפוננטה שדורשת כניסה בצד ה-Frontend: משתמש שלא מחובר לא צריך לראות טבלה ריקה של עובדים, אלא הודעה ברורה והפניה לדף הכניסה.
הבעיה
בלי חסימה, גולשים לרשימת העובדים אחרי רענון ורואים קומפוננטה עם טבלה ריקה, וגם הודעת שגיאה לא מתאימה. אין טריק כללי לכל הקומפוננטות, ולכן בודקים בכל קומפוננטה שדורשת כניסה.
השלבים העיקריים
1. בדיקה בתחילת הטעינה: בקומפוננטת מחלקה, ב-componentDidMount שמביא את העובדים, בודקים !authService.isLoggedIn().
2. הודעה: מציגים הודעה ברורה כמו "You are not logged in, please log in" ולא את השגיאה הגולמית.
3. ניתוב בקומפוננטת מחלקה: useHistory שייך לקומפוננטות פונקציה. בקומפוננטת מחלקה מגדירים בממשק ה-props שדה history מסוג History (מתוך החבילה history), ואז קוראים ל-this.props.history.push לדף הכניסה.
4. return חובה: אחרי הניתוב חייבים return. בלי זה הקוד ממשיך ומנסה לפנות לשרת.
5. באג שנמצא: isLoggedIn לא עבדה: הטוקן ב-Redux היה צריך להיות null גם בהתחלה ולא רק אחרי לוג אאוט. אחרי תיקון ההגדרה, דיבוג עם alert הצביע על הבעיה והוסר.
בדיקה
אחרי רענון ונסיון להיכנס לעובדים, מופיעה ההודעה ומעבר לדף הכניסה. אחרי כניסה, העובדים מוצגים. אחרי לוג אאוט ובדיקה נוספת, חוזרת אותה הפניה.
אחרי ההרצאה אפשר למנוע כניסה לקומפוננטה שדורשת התחברות ולהפנות את המשתמש לדף הכניסה.
השיעור הבא בקורס: שמירת טוקן ב-Session Storage

פרקי ההרצאה: הגנה על אתר עם שם וסיסמה בריאקט - Blocking Component

  1. 00:00

    מניעת גישה לקומפוננטה ללא כניסה

  2. 00:38

    למה לא להציג טבלה ריקה

  3. 01:16

    בדיקה בכל קומפוננטה בנפרד

  4. 01:54

    הצגת הודעה למשתמש לא מחובר

  5. 02:31

    ניתוב ב-Class Component

  6. 03:06

    הגדרת ה-Props עם היסטורי

תמלול ההרצאה: הגנה על אתר עם שם וסיסמה בריאקט - Blocking Component

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

  1. 00:02

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

  2. 00:16

    בוא נלך רגע להום, נערף ראש, יצאתי מלוקדאין, הלכתי למוצרים, אין לי בעיה להיכנס לקומפוננטה של המוצרים כי אני בעצם יכול להביא אותם גם אם אני לא לוקדאין.

  3. 00:27

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

  4. 00:46

    מה בדיוק אני אמור לראות עכשיו? טבלה ריקה? למה הוא מראה לי את הטבלה הזאת? הדבר הנכון לעשות זה או לא לגשת בכלל, או להפנות לדף הלוגין, וכמובן להציג הודעה מתאימה.

  5. 00:59

    את זה אנחנו רוצים למנוע. במילים אחרות אם היוזר אין לו הרשאה להיכנס לקומפוננטה, לא לתת לו להיכנס לקומפוננטה. איפה אנחנו עושים את זה?

  6. 01:08

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

  7. 01:26

    ואם אני נמצא כרגע ב-class employee list, אז אני רואה שיש לי פה את הקומפוננט דידמאונט שאוטומטית הולך לשרת ומנסה להביא לי את העובדים וכמובן מנסה להציג פה אבל רגע אל תנסה לעשות כלום אם היוזר לא לוגדין אחרת הוא יראה טבלה ריקה הוא יראה משהו שהוא לא אמור לראות אנחנו רוצים כאן לבצע את הקוד הבא אם היוזר לא לוגדין היה לנו outservice.isloggedin

  8. 01:54

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

  9. 02:06

    לדוגמה, You are not logged in or please log in to see this list or משהו. Good. מה עכשיו אנחנו רוצים לעשות?

  10. 02:15

    אנחנו רוצים לנתב למקום אחר. אני לא רוצה להישאר בקומפוננטה הזאת, אסור לי לראות אותה בכלל, כי אני לא לוגדין. איך אנחנו מנתבים? אם הייתי ב-functional component אז הייתי משתמש ב-react hook useHistory.

  11. 02:30

    בגלל שאני ב-Class Component, אני צריך להשתמש בטכניקה שמתאימה ל-Class Component. בואו נשים את הטכניקה הזאת. זה בעצם מצב שבו אנחנו רוצים שיהיה לנו Interface Employee List Props, אנחנו צריכים לשלב את זה ב-Props.

  12. 02:48

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

  13. 03:11

    אנחנו רוצים לומר שזה הפרופס שלנו, אז נשים אותו פה.

לקורס המלא: קורס ריאקט אונליין

ההרצאה הקודמת: שליחת JWT דרך Interceptor - ריאקט

ההרצאה הבאה: שמירת טוקן ב-Session Storage

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

  • Component Testing
  • Component Communitaction
  • אתר Netcraft
  • הגנה מהתקפות XSS

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

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס NodeJS