PracticU

שליחת JWT דרך Interceptor - ריאקט

בלי כתוביותעם כתוביות
PracticU › קורס ריאקט - React › שליחת JWT דרך Interceptor - ריאקט
מילון מושגים:
JWT - אסימון חתום בפורמט JSON שמעביר נתוני זהות והרשאה בין צדדים באופן קומפקט ומאומת.
טוקן - פיסת מידע שמשמשת לאימות או להרשאה, שהמערכת מנפיקה ללקוח ומוצגת בבקשות הבאות במקום סיסמה.
בקשה - פנייה שלקוח שולח לשרת כדי לקבל מידע או לבצע פעולה. השרת מחזיר עליה תגובה.
כותרת HTTP - שדה מידע נלווה בבקשה או בתגובה של HTTP, המעביר נתונים כמו סוג התוכן, אימות או הגדרות מטמון.
בוליאני - סוג נתונים שיכול לקבל אחד משני ערכים בלבד: אמת (true) או שקר (false).
הרשאה - קביעה אילו פעולות ומשאבים מותרים למשתמש או לתהליך לאחר שזהותו אומתה. שולטת במי רשאי לעשות מה.
ראוט - הגדרה שמקשרת כתובת בקשה לקוד שמטפל בה באפליקציה. גם מסלול שדרכו עוברות חבילות ברשת.
הערה - טקסט בקוד שמסביר אותו לבני אדם ואינו מבוצע על ידי המחשב.

שליחת JWT דרך Interceptor - ריאקט
שליחת הטוקן בכל בקשה בנפרד מסורבלת כשהרבה מקומות באתר דורשים כניסה (הוספה, מחיקה ועדכון עובד, ועוד). הפתרון הוא Interceptor של Axios שמוסיף את ה-header אוטומטית.
למה Interceptor
קודם נבנה Interceptor לוגר שהוצמד למופע Axios שנוצר בנפרד. כאן בונים משהו כללי יותר, שחל על כל השימושים ב-Axios ולא רק על מופע אחד.
השלבים העיקריים
1. פונקציה: בקובץ interceptors.ts כותבים פונקציה createInterceptors שלא מחזירה דבר, ומייצאים אותה כ-export default.
2. חיבור ל-Axios עצמו: ב-axios.interceptors.request.use מעבירים פונקציה שמקבלת את ה-request ומחזירה אותו בסוף. כך האינטרספטור פועל על כל הבקשות באפליקציה.
3. בדיקת כניסה: ב-AuthService בונים isLoggedIn שמחזירה boolean. היא בודקת אם this.token שונה מ-null. הטוקן ב-Redux הוא null או מחרוזת.
4. הוספת ה-header: אם המשתמש מחובר, מוסיפים ל-request.headers את Authorization עם Bearer והטוקן. אם לא, לא מוסיפים כלום.
5. שליחה לכל בקשה: הטוקן נשלח בכל בקשה, גם לראוט פתוח, והשרת פשוט יתעלם ממנו שם.
6. הסרה והפעלה: מסמנים בהערה את הקוד הקודם עם headers ובסרוויס העובדים לא צריך להתעסק בהדר. קוראים ל-createInterceptors פעם אחת בלבד, ב-index.tsx בעליית התוכנית.
בדיקה
אחרי רענון המוצרים נטענו, ועובדים נכשלו כי לא היה חיבור. אחרי כניסה, רשימת העובדים הופיעה, כלומר האינטרספטור שלח את הטוקן.
אחרי השיעור הטוקן נשלח אוטומטית בכל בקשה של משתמש מחובר, בלי קוד נוסף בכל סרוויס.
השיעור הבא בקורס: הגנה על אתר עם שם וסיסמה בריאקט - Blocking Component

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

  1. 00:00

    הבעיה בשליחה לכל ריקווסט

  2. 00:38

    מקומות רבים הדורשים טוקן

  3. 01:16

    הכרת Logger Interceptor

  4. 01:53

    אינטרספטור לכל מופעי access

  5. 02:33

    בניית Create Interceptors

  6. 03:08

    הוספת הטוקן ב-request use

  7. 03:44

    פונקציית is logged in

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

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

  1. 00:02

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

  2. 00:32

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

  3. 00:45

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

  4. 01:12

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

  5. 01:31

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

  6. 02:01

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

  7. 02:35

    Export default create interceptors בצורה כזאת. הפונקציה הזאת הולכת להכיל אינטרספטור ששייך ל-access בכבודו ובעצמו ולא למופע כלשהו של אקסס.

  8. 02:50

    אז אנחנו באים ל-access, פעם יש לנו את זה מאיזושהי סיבה, ואנחנו אומרים ל-access interceptors, כלומר אני שם את הפונקציות המיוחדות האלה במופע האמיתי של access ולא create instance.

  9. 03:08

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

  10. 03:26

    אם יש לי את הטוקן אני רוצה להוסיף header ל-request שמכיל את הטוקן אם אין לי את הטוקן כי לא עשיתי לוגין אין לי מה להוסיף את ההדר הזה. איך אני יודע שיש לי את הטוקן או אין לי?

  11. 03:39

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

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

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

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

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

  • שליחת email
  • הסבר על JWT לאימות משתמשים
  • הסבר על Frida Interceptor Replace
  • שליחת מאפיינים לרכיב

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

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