צפיות
תשובות
בדיקת משתמש מחובר בסשן/קוקי
בניתי מערכת משתמשים (שם וסיסמא) שעובדת כבר זמן רב אך עם סשנ-ים ולא עם קוקיס.
כעת עלה הצורך בקוקיס ולא הבנתי דבר מרכזי.
כיום, בסשן, כשאני רוצה לבדוק האם המשתמש מחובר או לא אני פשוט בודק האם הסשן שווה לערך שכתבתי לו, וזהו..
אך בקוקיס, אחרי שאני יוצר אותו(וכותב לו שם וסיסמא מוצפנת, לדוג'), מהי הדרך היעילה ביותר לבדוק האם המשתמש מחובר בכל דף ודף?
כעיקרון הבנתי שיש שתי דרכים:
1. בכל דף צריך לעשות שאילתא למסד ולבדוק האם הערכים שבקוקיס שווים לנתונים שבמסד? משום מה נראה לי מוזר שאתרים המשתמשים רק בקוקיס בודקים בכל דף את הנתונים מול המסד. אם אני צודק, איך באמת עושים זאת?..
2. בכניסה לאתר אני בודק אם הסשן ריק, אם כן, אז אני לוקח את הנתונים מהקוקיס ובודק אותם מול המסד. אם לא, אז לעשות את הבדיקה עם הסשן?
איזו מהן הטובה יותר? אולי יש דרך שלישית? (לי נראה שהדרך הטובה יותר היא הדרך השנייה, אני צודק?)
תודה לכולם!
3 תשובות
אני דוגל בשיטת אמצע: גולש נרשם לאתר ואני כותב לו קוקי + סשן.
בכניסה הבאה לאתר אני אזהה אותו לפי הקוקי בלבד (ולא אאמת מול הדיבי בכל עמוד) אלא רק ב-Form Actions, כלומר רק כשהוא שולח נתונים כלשהם לאתר ויש חשיבות לאימות המשתמש – בעת קליטת הנתונים אני אוודא את הקוד הזמני וה-UserID מול הדיבי ואדע שזה לא מתחזה.
במקרה והגולש מנסה להיכנס ולצפות במידע פרטי/רגיש או לעדכן את המידע הזה, אני אבדוק שגם יש סשן, ואם לא – אעביר אותו לבצע לוגין שוב.
וכמובן רצוי לחדש את הקוד הזמני בכל פעם שהמשתמש מבצע לוגין לאתר
כתבת: בכניסה הבאה לאתר אני אזהה אותו לפי הקוקי בלבד (ולא אאמת מול הדיבי בכל עמוד)
לא הבנתי, איך בדיוק לזהות לפי קוקי בלבד?
האם לבדוק האם הקוקי קיים? כך:
if Request.Cookies("as") = "" then
//mycode
end if
לא סתם בדיקה אם קוקי קיים או לא, אלא ממש לקיחה של השם משתמש והמספר מהקוקי, שהטמעת בלוגין
ושוב – כל מקרה לגופו, אני פשוט מתאר מצב שאתה לא מציג למשתמש מידע רגיש אישי, אלא כמצב של הנושא של ההתחברות לאתר היא לצורכי פרסונליזציה של התצוגה או קליטה של נתונים (פורומים, לוח מודעות, וכדומה). במקרה כזה – אין לך צורך לבדוק מול הדיבי בכל טעינת עמוד, אלא לדעתי מספיק לוודא את המידע כשהפעולה מבוצעת בפועל, כלומר בתחילת העמוד שקולט את האקשן של הטופס עצמו