PracticU

יצירת Redux AuthState

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

יצירת Redux AuthState

בשיעור זה אנו בונים את State האימות ב-Redux עבור הפרויקט, מבינים מדוע נדרש לנהל את פרטי המשתמש ברמת האפליקציה כולה, ובונים State, פעולות, Action Creators ו-Reducer לרישום, כניסה והתנתקות.
נושאי הסיכום המוצגים בשיעור:
1. מדוע נדרש Redux לאימות: רכיבי הרשמה והתחברות מקבלים מהשרת את אובייקט המשתמש, ורכיבים רבים אחרים באפליקציה צריכים לדעת מי המשתמש, האם מותר לו להיכנס, האם יש לו הרשאה מסוימת, או להציג את שמו באזור הכותרת.
2. היתרון של Redux כאן: מכיוון שכמעט תמיד רוצים להשתמש באובייקט המשתמש בכל מקום באפליקציה, ניהולו ב-Redux מקל מאוד על העבודה.
3. בחירת שם ה-State: יוצרים קובץ מסוג Auth State בתיקיית Redux, ולא קוראים לו קובץ משתמשים אלא Auth, מכיוון שהמושג Auth מתאר את כל תחום האימות וההרשאות, ותפקיד ה-State הזה לאפשר הרשמה, התחברות והתנתקות.
4. התוכן של ה-State: מהשרת מקבלים טוקן שברצוננו לשמור ברמת האפליקציה, מכיוון שנשלח אותו לשרת בכל פעם בכותרת ההרשאה בתור המילה מורשה ואחריה הטוקן, ובנוסף שומרים אובייקט משתמש מסוג המודל שבנינו.
5. למה לא לפענח את הטוקן שוב ושוב: הטוקן מכיל בתוכו בצורה מקודדת את המשתמש, אך נשלוף ממנו את אובייקט המשתמש פעם אחת ונשמור אותו במשתנה, כדי שבכל מקום באתר נוכל לעבוד ישירות עם המשתמש ולקרוא את שמו הפרטי ושם משפחתו בלי לפענח את הטוקן כל פעם מחדש.
6. מזהי הפעולות: מגדירים את מזהי הפעולות האפשריות, רישום, התחברות והתנתקות, לפי הטכניקה שלמדנו ב-Redux.
7. ממשק הפעולה: מגדירים ממשק Action שמכיל Type מסוג מזהי הפעולות ו-Load, ומכיוון שברישום ובהתחברות מקבלים מהשרת טוקן בצורת מחרוזת, ה-Load יוגדר תחילה כמחרוזת, אך נשקול להגדיר אותו ככללי מכיוון שלא בכל הפעולות יש Load.
8. ה-Load האופציונלי: בפעולת ההתנתקות אין צורך לשלוח שום Load, ולכן הוא מוגדר אופציונלי, משהו שקיים לעיתים בממשקי Action.
9. פונקציות יצירת הפעולות: נבנות שלוש פונקציות, פונקציית רישום ופונקציית התחברות שמקבלות את הטוקן מהשרת ומחזירות אובייקט פעולה עם ה-Type המתאים והטוקן בתור ה-Load, ופונקציית התנתקות שאינה מקבלת דבר ואינה מספקת Load, היא רק מורה לבצע התנתקות.
10. ה-Reducer: ה-Reducer מקבל את ה-State הנוכחי שמאותחל כברירת מחדל ל-State הריק של האימות ואת ה-Action, משכפל את ה-State הנוכחי בעזרת אופרטור השכפול, מבצע מבנה החלטה על סוג הפעולה ומחזיר State חדש.
11. הפעולות בתוך ה-Reducer: ברישום ובהתחברות פועלים באופן זהה, לוקחים את הטוקן מה-Load ומציבים אותו ב-State החדש, מכיוון שהשרת מחזיר טוקן בלבד שבתוכו שתול המשתמש, ומסמנים בהערה את השלב העוקב של חילוץ אובייקט המשתמש מהטוקן, ובהתנתקות מנטרלים את הטוקן ואת אובייקט המשתמש במלואם, כלומר שוכחים את המשתמש.
12. איחוד קייסים: מכיוון שהלוגיקה של רישום והתחברות זהה, מאחדים את שני הענפים לאחד, בלי לשכפל קוד, כאשר שני ה-Types נבדקים יחד ומבוצע אותו קוד עד סוף הענף, ואם במערכות אחרות תרצו לוגיקה שונה לכל אחד, אפשר להשאיר ענפים נפרדים.
13. שילוב ב-Store: במודול ה-Store מוסיפים את State האימות לצד State המוצרים ו-State העובדים, מחברים אליו את ה-Reducer של האימות, וכך ה-Store תומך גם בניהול פרטי האימות.
לסיכום, בשיעור זה בנינו את כל תשתית האימות ב-Redux, State שמחזיק טוקן ואובייקט משתמש, מזהי פעולות לרישום התחברות והתנתקות, פונקציות יצירת פעולות עם Load אופציונלי, ו-Reducer עם איחוד קייסים לרישום והתחברות, והוא שולב ב-Store לצד שאר ה-States, כאשר נותר ללמוד כיצד מחלצים את אובייקט המשתמש מתוך הטוקן.
בשיעור הבא נעסוק בנושא פתיחה ופענוח טוקן - Decoding the Token.
SR12682HE

פרקי ההרצאה: יצירת Redux AuthState

  1. 00:00

    למה צריך Redux לאימות

  2. 00:36

    קומפוננטות הצריכות את היוזר

  3. 01:32

    בניית OutState ברידקס

  4. 02:09

    שליחת הטוקן בהדר Authorization

  5. 02:49

    הגדרת Out Action Type

  6. 03:29

    הגדרת ה-payload של האקשן

  7. 04:10

    בניית Action Creators

תמלול ההרצאה: יצירת Redux AuthState

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

  1. 00:02

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

  2. 00:20

    מאוד פשוט, יש לנו פה אפשרות to register, זה קומפוננט ה-א', יש לנו אפשרות to log in, זה קומפוננט ה-ב', שתי הקומפוננטות האלה אמורות לקבל בחזרה את אובייקט היוזר.

  3. 00:33

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

  4. 00:49

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

  5. 01:11

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

  6. 01:21

    אז אנחנו ניגשים כרגע לתיקיית רידאקס ומייצרים לנו OutState PS, אני לא אקרא לו user state או users state אלא out state ש-out זה בעצם המונח שמדבר על כל האותנטיקיישן וכל האוטוריזיישן כי כל מה שהרידקס הזה צריך לעשות זה לאפשר לנו to register, to log in ו-to log out טוב איך אנחנו בונים בואו נתחיל עם ה-state שלנו הנה המחלקה ה-out state

  7. 01:52

    ומה שאנחנו הולכים לקבל מה-back end זה קודם כל את הטוקן גם את אותו הטוקן אני רוצה לשמור ב-Level הראשי של האפליקציה. אתם תראו בהמשך למה.

  8. 02:05

    אנחנו כמובן רוצים לשלוח אותו לשרת, אם אתם זוכרים את זה, בהדר שכתוב בו "Authorization", "Barer" ואז ה-Token. אוקיי, איפה אני שולח? אני שולח בכל מיני מקומות אחרים.

  9. 02:17

    אז גם הטוקן נמצא ב-Application Level. בנוסף לטוקן שקיבלתי מה-Backend, אני רוצה לדעת מי זה היוזר. סוג שלו זה כמובן יוזר המודל. שאנחנו בנינו הנה המחלקה יש לנו את הטוקן ויש לנו את היוזר טוקן מכיל בתוך עצמו בצורה מקודדת את היוזר אבל אנחנו הולכים לשלוף אותו ממנו ולשים

  10. 02:41

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

  11. 03:02

    אלה הפעולות שאנחנו יכולים לעשות. אנחנו יכולים to register, בואו נכניס לתוכו register, אנחנו יכולים to log in, נכניס לתוכו log in, ואנחנו יכולים to log out.

  12. 03:17

    נכניס לתוכו log out בהתאם לכל הטכניקה שלמדנו ב-Redux. הדבר הבא שאנחנו רוצים זה לא זה, אלא export interface out action, אנחנו רוצים type זה סוג out action type ואנחנו רוצים payload הוא any ומה זה אומר שהוא any זה אומר שאנחנו רוצים לשלוח את הפרטים של הtoken באמת הוא יכול להיות string לפי

  13. 03:50

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

  14. 04:13

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

  15. 04:35

    מחזיר אאוט אקשן שבנינו לפני שנייה ובואו נחזיר טייפ. זה יהיה אאוט אקשן טייפ רג'יסטר והפיילוד יהיה הטוקן שקיבלנו.

  16. 04:50

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

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

ההרצאה הקודמת: יצירת User Mode בריאקט

ההרצאה הבאה: פתיחה ופענוח טוקן - Decoding the Token

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

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