דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. הקלדת URL מאפסת LocalSession?

הקלדת URL מאפסת LocalSession?

מתוזמן נעוץ נעול הועבר תכנות
7 פוסטים 3 כותבים 198 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • yyyY מנותק
    yyyY מנותק
    yyy
    כתב ב נערך לאחרונה על ידי
    #1

    מדובר על פרוייקט אנגולרי ובו כתובת המטופלת ע"י
    app-routing.module.ts (ללא פרמטרים).
    תודה

    yossizY תגובה 1 תגובה אחרונה
    0
    • yossizY מנותק
      yossizY מנותק
      yossiz
      השיב לyyy ב נערך לאחרונה על ידי yossiz
      #2

      @yyy

      הקלדת URL מאפסת LocalSession

      אם הבנתי מה אתה שואל אז התשובה היא - לא.
      גם רענון הדף, או ניתוב לאתר אחר וחזרה לאתר זה, לא מאפסים.
      רק סגירת הטאב מאפס.
      https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage#:~:text=Whenever a document,objects in sessionStorage.

      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

      yyyY תגובה 1 תגובה אחרונה
      2
      • yyyY מנותק
        yyyY מנותק
        yyy
        השיב לyossiz ב נערך לאחרונה על ידי
        #3

        @yossiz
        הבעיה שזה כן מאפס לי.
        אנסה לתאר מה אני מנסה לעשות:
        יש סרויס Svc שתפקידו לוודא שמשתמש לא מורשה, לא מקליד כתובת של דף וכך עוקף את מנגנון ההגנה של סיסמה+שם.
        Svc מריץ מקונסטרקטור את הפקודה

        sessionStorage.setItem("Allowed","0").
        

        בקומפוננטה הראשונה שנטענת המשתמש מקבל מסך Login
        שמפעיל את הפונקציה הזו, הנמצאת ב-Svc:

        checkPassword() {
            if ((this.password === "xxxx"&&this.name ==="yosi")) 
            {
              sessionStorage.setItem("Allowed","1")
              this.router.navigate(['allitems']);
            } else alert('wrong password');
          }
        

        בשלב הבא בכל קומפוננטה שנטענת, בקונסטרקטור שלה נבדק ה-localSession, ע"י הפונקציה הבאה (גם היא ב-Svc):

        redirectIfUnallowed(){
           if(sessionStorage.getItem("Allowed") !=  "1")
           this.router.navigate(['landing']);
        }
        

        הבעיה שהערך של Allowed ב-SessionStorage שומר על יציבות כל עוד אני לא ניגש ל-URL. אם אני כותב ב-URL נניח http://localhost:4200/favorites (כתובת אמיתית) הערך של Allowed מתאפס ואני נזרק אל מסך landing, למרות שהזדהתי כשורה.

        yossizY תגובה 1 תגובה אחרונה
        0
        • yossizY מנותק
          yossizY מנותק
          yossiz
          השיב לyyy ב נערך לאחרונה על ידי
          #4

          @yyy אם הדף נטען מחדש אז הקוד הזה רץ שוב:

          sessionStorage.setItem("Allowed","0")
          

          (אגב, זה לגמרי לא תקין לעשות בקרת גישה בצד הלקוח, אבל זה לא הנושא פה)

          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

          yyyY י 2 תגובות תגובה אחרונה
          5
          • yyyY מנותק
            yyyY מנותק
            yyy
            השיב לyossiz ב נערך לאחרונה על ידי
            #5

            @yossiz אמר בהקלדת URL מאפסת LocalSession?:

            @yyy אם הדף נטען מחדש אז הקוד הזה רץ שוב:

            sessionStorage.setItem("Allowed","0")
            

            (אגב, זה לגמרי לא תקין לעשות בקרת גישה בצד הלקוח, אבל זה לא הנושא פה)

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

            (אני אומנם טוען את Svc בקונסטרקטור של כל קומפוננטה, בכדי לאפשר לקומפוננטה גישה לרכיבים של האבטחה, אבל זה לא סיבה להריץ שוב את הקונסטרקטור, ובאמת אם אני לא ניגש דרך ה-URL אלא באמצעות RouterLinks לקומפוננטה, הערך לא מתאפס, כלומר הקונסטרקטור של Svc לא רץ פעם נוספת)

            yossizY תגובה 1 תגובה אחרונה
            0
            • י מנותק
              י מנותק
              יוסף בן שמעון
              השיב לyossiz ב נערך לאחרונה על ידי יוסף בן שמעון
              #6

              @yossiz אמר בהקלדת URL מאפסת LocalSession?:

              (אגב, זה לגמרי לא תקין לעשות בקרת גישה בצד הלקוח, אבל זה לא הנושא פה)

              וזה גם לא תקין באנגולר לשמור על ראוטינג באמצעות LocalSession
              הדרך הנכונה היא לשמור את פרטי המשתמש באיזה סרביס userService, ולתת לראוטר של אנגולר הוראה לאיזה נתבים צריך אימות משתמש עם CanActivate
              ראה כאן הסבר
              https://www.tektutorialshub.com/angular/angular-canactivate-guard-example/

              תגובה 1 תגובה אחרונה
              2
              • yossizY מנותק
                yossizY מנותק
                yossiz
                השיב לyyy ב נערך לאחרונה על ידי
                #7

                @yyy אני לא יודע אם זה רץ שוב. לכן כתבתי:

                אם הדף נטען מחדש אז

                📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                תגובה 1 תגובה אחרונה
                0
                • dovidD dovid העביר נושא זה מ-תכנות ב-

                בא תתחבר לדף היומי!
                • התחברות

                • אין לך חשבון עדיין? הרשמה

                • התחברו או הירשמו כדי לחפש.
                • פוסט ראשון
                  פוסט אחרון
                0
                • דף הבית
                • קטגוריות
                • פוסטים אחרונים
                • משתמשים
                • חיפוש
                • חוקי הפורום