אנגולר - שמירת משתמש נוכחי לאחר הלוגין בכל האתר

מאיר ומלי

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

תודה רבה!
 

גזעי

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
השאלה היא איך את מממשת את האימות, כי זה לא אמור להיות משהו שקשור לאנגולר, הטוקן נמצא בשביל להעביר אותו בבקשות HTTP לשרת, ואת יכולה לשמור אותו איך שבא לך, זה לא באמת משנה.

בשביל אימות גם על כתובות לrouting של אנגולר, צריך להשתמש בgaurd של אנגולר.

עריכה:
הנה מדריך ליצור gaurd עם JWT באנגולר
 
נערך לאחרונה ב:

סמרקט

מהמשתמשים המובילים!
הנדסת תוכנה
D I G I T A L
בגדול ממש יש שתי דרכים איך לממש את זה.

רק בתור הקדמה הסבר על התהליך:
הקליינט פונה לשרת עם פרטי הזדהות (שם משתמש וסיסמא נניח).
השרת מייצר טוקן ושולח אותו לקליינט.
הקליינט צריך לדאוג להעביר את הטוקן בכל קריאה לשרת, כך שהשרת יזהה באמצעות הטוקן מי המשתמש.
הקליינט יכול לשמור את הטוקן איך שבא לו. מקובל להשתמש ב-cookie כדי שבאופן אוטומטי הטוקן יצורף לכל request ולא צריך לדאוג לזה ידנית. (יש פה קטע של אבטחה שצריך לטפל בו, אבל זה נושא נפרד.)

יש שני סוגי טוקנים שמקובל להשתמש בהם:
1.session id - בד"כ מס' ארוך שמשמש כמזהה של ההתחברות. השרת שומר את הטוקן ב-DB בהקשר למשתמש. בכל request השרת יבדוק מול ה-DB למי שייך הטוקן ויתן מידע והרשאות בהתאם.
2. jwt (ג'וט) - ג'וט הוא אוביקט json שמכיל מידע רלוונטי (לדוג' שם משתמש, תפקיד). השרת חותם את המידע עם מפתח (sign) ומעביר לקליינט בפורמט של base64. בכל request השרת בודק את החתימה של הג'וט מול המפתח ומוודא שלא בוצע שינוי במידע כך שהשרת לא שומר את הג'וט ב-DB.
חשוב להדגיש: בשום אופן אין לשים בג'וט מידע סודי כמו סיסמא, כיון שהג'וט אינו מוצפן אלא רק חתום.
(ניסיתי לתאר באופן מאוד בסיסי מה זה ג'וט, את כל השאר אפשר למצוא בשפע בגוגל)

בשתי הדרכים הנ"ל לא משנה איך הקליינט שומר את הטוקן. (יש הבדלים בטיפול בקטע של אבטחה)
 

קצרה

משתמש מקצוען
את הטוקן אפשר לשמור גם ב local storage וגם בסרביס איך שנוח.

בכל מקרה הטוקן נשמר איכשהו אצל הלקוח כי הוא חייב להשלח לשרת
ולכן מי שממש רוצה - יוכל למשוך אותו
לכן כמובן הוא מוגבל בזמן..

איך שולחים את הטוקן בכל קריאה לשרת?
אפשר להשתמש ב interceptor שיוסיף אותו ל header של כל קריאה.
 

אולי מעניין אותך גם...

הפרק היומי

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


תהילים פרק קלז

א עַל נַהֲרוֹת בָּבֶל שָׁם יָשַׁבְנוּ גַּם בָּכִינוּ בְּזָכְרֵנוּ אֶת צִיּוֹן:ב עַל עֲרָבִים בְּתוֹכָהּ תָּלִינוּ כִּנֹּרוֹתֵינוּ:ג כִּי שָׁם שְׁאֵלוּנוּ שׁוֹבֵינוּ דִּבְרֵי שִׁיר וְתוֹלָלֵינוּ שִׂמְחָה שִׁירוּ לָנוּ מִשִּׁיר צִיּוֹן:ד אֵיךְ נָשִׁיר אֶת שִׁיר יְהוָה עַל אַדְמַת נֵכָר:ה אִם אֶשְׁכָּחֵךְ יְרוּשָׁלִָם תִּשְׁכַּח יְמִינִי:ו תִּדְבַּק לְשׁוֹנִי לְחִכִּי אִם לֹא אֶזְכְּרֵכִי אִם לֹא אַעֲלֶה אֶת יְרוּשָׁלִַם עַל רֹאשׁ שִׂמְחָתִי:ז זְכֹר יְהוָה לִבְנֵי אֱדוֹם אֵת יוֹם יְרוּשָׁלִָם הָאֹמְרִים עָרוּ עָרוּ עַד הַיְסוֹד בָּהּ:ח בַּת בָּבֶל הַשְּׁדוּדָה אַשְׁרֵי שֶׁיְשַׁלֶּם לָךְ אֶת גְּמוּלֵךְ שֶׁגָּמַלְתְּ לָנוּ:ט אַשְׁרֵי שֶׁיֹּאחֵז וְנִפֵּץ אֶת עֹלָלַיִךְ אֶל הַסָּלַע:
נקרא  17  פעמים

לוח מודעות

למעלה