PracticU

שמירת טוקן ב-Session Storage

בלי כתוביותעם כתוביות
PracticU › קורס ריאקט - React › שמירת טוקן ב-Session Storage
מילון מושגים:
טוקן - פיסת מידע שמשמשת לאימות או להרשאה, שהמערכת מנפיקה ללקוח ומוצגת בבקשות הבאות במקום סיסמה.
סשן - פרק זמן של פעילות רציפה בין משתמש למערכת, שבו נשמר מידע על מצבו, למשל לאחר התחברות לאתר.
אחסון - שמירת נתונים באופן קבוע על התקנים כמו דיסקים או שירותי ענן, כך שיישמרו גם לאחר כיבוי.
סטייט - המידע על מצבו הנוכחי של רכיב או אפליקציה בזמן נתון, שמשתנה ומשפיע על מה שמוצג.
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
דפדפן - תוכנה שמציגה דפי אינטרנט ומריצה את הקוד שבהם, ומאפשרת לגלוש בין אתרים, למשל Chrome או Firefox.
בנאי - מתודה מיוחדת שמופעלת אוטומטית בעת יצירת אובייקט ממחלקה, ומאתחלת את ערכיו ההתחלתיים.

שמירת טוקן ב-Session Storage
רענון הדף מוחק את כל המשתנים, כולל ה-State של Redux, ולכן משתמש מחובר "עף החוצה". ההרצאה מתקנת את זה בשמירת הטוקן ב-Session Storage ובטעינתו מחדש כשהאפליקציה עולה.
הבעיה
אחרי כניסה אפשר לעבור בין העמודים ולהיכנס לעובדים, אבל רענון (F5, Ctrl+F5 או Enter בשורת הכתובת) בונה את האתר מחדש. הזיכרון של משתנים, אובייקטים ומערכים נמחק, ומה שלא נשמר ב-Storage אובד. משתמש שנכנס לא אמור להיזרק החוצה, גם אחרי הרבה רענונים.
local storage או session storage
- Local Storage: נשאר גם אחרי סגירת הדפדפן, ופחות מאובטח. מתאים כשרוצים שהמשתמש ייזכר שבוע אחר כך.
- Session Storage: נשאר לאורך הגלישה הנוכחית כולל רענונים, ולא אחרי סגירת הדפדפן. עדיף לאבטחה, אבל הבחירה תלויה באתר.
השלבים העיקריים
1. שמירה בעת הרשמה או כניסה: בנוסף לשמירה ב-Redux, קוראים ל-sessionStorage.setItem("token", newState.token). שומרים רק את הטוקן ולא את אובייקט המשתמש, כי הוא כבר בתוך הטוקן.
2. מחיקה ביציאה: בלוג אאוט קוראים ל-sessionStorage.removeItem("token").
3. טעינה בעלייה: לרענון אין מעבר דרך register, login או logout, אבל המחלקה נבנית מחדש. לכן בונים constructor שקורא sessionStorage.getItem("token"), ואם יש טוקן, מציבים אותו ב-State וגם מחלצים את המשתמש.
4. חילוץ המשתמש: משתמשים באותו jwtDecode שכבר הופיע, ומציבים את payload.user ב-this.user.
בדיקה
אחרי רענון מנסים עובדים ולא נכנסים. אחרי כניסה הטוקן מופיע ב-Session Storage. אחרי רענון המשתמש נשאר מחובר וגם רענון נוסף לא פוגע. אחרי לוג אאוט הטוקן נעלם מה-Storage והגישה לעובדים נחסמת.
אחרי ההרצאה משתמש מחובר נשאר מחובר גם אחרי רענון הדף.
השיעור הבא בקורס: יצירת תפריט לוגין בריאקט

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

  1. 00:00

    בעיית היציאה אחרי רענון

  2. 00:56

    מה קורה בעת רענון האתר

  3. 01:33

    שמירת הטוקן נגד רענון

  4. 02:12

    Local Storage מול Session Storage

  5. 03:05

    שיקולי אבטחה בין האחסונים

  6. 03:38

    שמירה עם setItem בסשן סטורג'

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

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

  1. 00:02

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

  2. 00:21

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

  3. 00:32

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

  4. 00:47

    חזרתי להום, עשיתי ריפרש, ריפרש פשוט לגמרי. יכול להיות שהיוזר מרפרש את הדף, יכול להיות שהוא מרפרש ככה, יכול להיות שהוא לוחץ על F5, יכול להיות שהוא לוחץ על קונטרול F5, ויכול להיות שהוא בא לפה ולוחץ אנדר.

  5. 01:00

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

  6. 01:15

    כי בעצם הדפדפן הלך ל-Backend וכאילו קיבל מחדש את כל האתר והחליף את האתר הקודם עם כל המשתנים שלו. מה שלא שמרתם בסטורג' נעלם, Local Storage או Session Storage.

  7. 01:28

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

  8. 01:39

    אם היוזר עשה לוגין שיעשה מאה פעם רפרש הוא עדיין אמור להישאר לוג דין. אנחנו צריכים לטפל בזה. טיפול הוא מאוד פשוט Redux Outstate.

  9. 01:53

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

  10. 02:07

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

  11. 02:33

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

  12. 02:46

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

  13. 03:02

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

  14. 03:14

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

  15. 03:29

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

  16. 03:54

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

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

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

ההרצאה הבאה: יצירת תפריט לוגין בריאקט

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

  • שמירת מידע בטלפון - Storage
  • S3 Storage - חלק 1
  • Session object - חלק 1
  • External Storage

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

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