שאלות נפוצות ותשובות (קצת פחות נפוצות): הצגת דף/נתונים למשתמש פעם אחת בלבד באפליקציות Net. אינטרנטיות ואינטראנטיות

שאלות נפוצות ותשובות (קצת פחות נפוצות): הצגת דף/נתונים למשתמש פעם אחת בלבד באפליקציות Net. אינטרנטיות ואינטראנטיות

Print Friendly, PDF & Email

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

אם מדובר בסביבה אינטראנטית אזי מצבנו קל יחסית – את המשתמשים ניתן לזהות בסביבת Windows על בסיס ה-Integrated Windows Authentication אם הדבר מוגדר נכון ב-IIS ברמת ה-Virtual Directory והוגדר ברמת ה-web.config, אם הכל הוגדר כראוי אנחנו אמורים להיות מסוגלים לקבל את שם המשתמש בעזרת האובייקט User.Identity.Name ומשם הדרך קצרה לאחסן אותו במסד נתונים כלשהו על פי בחירת הכותב ולבדוק אם הוא שם ואם לא, להציג את הדף או הנתונים המדוברים.

אפשרות נוספת, גם היא, בסביבה אינטראנטית בלבד, במידה ומדובר בסביבה אינטראנטית כאשר לגולשים מוגדרות כתובות IP קבועות (למשל בסביבת DHCP עם Reservations או בכתובות ידניות), במקרה כזה ללא תלות במערכת ההפעלה ובהגדרות ב-IIS ו/או ב-web.config נוכל לזהות את המחשב הפונה על ידי שימוש באובייקט HttpRequest כך: HttpContext.GetCurrent().Request.UserHostAddress.

אם מדובר בסביבה אינטרנטית המצב מורכב יותר ובהרבה, בשל החשיפה לסיכוני אבטחה (מצד הגולש), הוא בדרך כלל יגן על עצמו וישתדל לחשוף לגבי זהותו את המינימום ההכרחי, כתוצאה מכך לא יהיה ניתן להשתמש ב-Integrated Windows Authentication (בשל חוסר יכולתו לעבור באופן תקין דרך Firewalls ובשל הצורך הלא פרקטי להקים משתמש ב-Active Directory) . כמו כן, לא יהיה ניתן להשתמש גם ב-HttpContext.GetCurrent().Request.UserHostAddress שכן במקרים רבים הגולש עובר דרך התקני NAT (כלומר Network Address Translation) אשר יציגו כתובת חיצונית אחת עבור כמה מחשבים (למשל בארגונים כל הכתובות בדרך כלל יגלשו דרך כתובת אחת). השיטות המקובלות באינטרנט בדרך כלל נחלקות ל-2 כאשר לכל אחת יתרונות וחסרונות משלה:

אפשרות אחת היא השימוש בעוגיות (Cookies) לשמירת דגל שיציין שהמשתמש כבר ביקר באתרינו בעבר ובמידה וה-Cookie הזו לא נמצאה במחשב הלקוח נוכל להניח שזו כניסתו הראשונה של משתמש זה ונוכל להציג לו את הדף או הנתונים המתאימים. היתרון הברור הוא שהמשתמש לא נדרש לבצע דבר על מנת שנוכל לזהותו, בדיוק כמו בשימוש ב-Integrated Windows Authentication בסביבה האינטראנטית. עם זאת, החיסרון הוא שבשל בעיות אבטחה שאירעו בעבר באתרים שונים ואשר נבעו משימוש שגוי של מתכנתי אתרים ב-Cookies, משתמשים רבים ומערכות הפעלה ודפדפנים רבים חוסמים או מגבילים את האפשרות לרשום Cookies ולכן עלול בהחלט להיות שנזהה משתמש כגולש בפעם הראשונה למרות שהוא כבר גלש בעבר. אם לא די בזה, אז גם משתמש שבחר לנקות את ההסטוריה בדפדפן ולמחוק את קבצי ה-Cookies מכל סיבה שתהיה (למשל על מנת להסתיר עקבות גלישה לאתר כלשהו) יזוהה גם הוא כגולש בפעם הראשונה למרות שגלש לאתרינו בעבר.

אפשרות נוספת היא השימוש בביצוע Login מסודר, ההזדהות יכולה להתבצע מול כל גורם שהוא (DB, Forms Auth, Windows Live וכו') ולאחר ההזדהות נוכל בעצם לזהות את המשתמש ולדלג על הדף או הנתונים המיועדים למשתמש חדש בלבד ולהציג את הדף או הנתונים הללו רק בעת ההרשמה לאתר. היתרון הוא כמובן שהזיהוי הוא כמעט וודאי אך מצד שני המשתמש נדרש לבצע פעולת הזדהות בכדי להתחיל לעבוד עם האתר ועצם הצורך בכך עשוי לגרום לו לנדוד לאתר אחר.

בהצלחה.

השאר תגובה