UserInRole מחזיר שקר אחרי הוספת Role. איך אוכפים אתו לבדוק שנית ולא להסתמך על הקאש שלו
-
פרוייקט asp mvc
כשאני מוסיף למשתמש role אז הוא מחזיר לי שהrole לא קיים למרות שהוא כן קיים.
בשביל שהמשתמש יוכל "להנות" מהאפשרויות של ההרשאה החדשה, הוא צריך לצאת ולהיכנס מחדש.
אבל חמור מכך אם הורדתי לו הרשאה, היא תישאר בתוקף עד היציאה והכניסה הבאה שלו. שזה כבר מסוכן.....שאלתי את הרב גוגל, ומצאתי תשובה בסטאק
קוד הפיתרון שם:private async Task SignInAsync(User user, bool isPersistent) { AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie); var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie); AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity); }
בעצם הרעיון הוא להוציא ולהחזיר את המשתמש ברקע בלי שירגיש.
הבעייה היא שיש לי מקרה קצה כלשהו, את ההרשאות אני מוסיף ומוריד באפליקציית ווב אחת, והמשתמש נמצא על אחרת, שמחוברת לאותו בסיס נתונים ומשתמשים בדיוק.
אז אין לי איך להוציא ולהכניס אותו ברקע, כי אני לא על האפליקצייה שלו....אני מחפש רעיון או פיתרון יותר אלגנטי מאשר לכתוב פונקצייה משלי שתבדוק כל פעם ישירות מול הDB. (איזה קמצן אני בפניות לDB...)
אהבתי את הרעיון שלהם להחזיק את זה בקאש, פחות אהבתי את ההתנהגות הזו שלא יודעת להבין לבד באותה אפליקצייה שהוספתי / הורדתי למשתמש רול.....
רעיונות?
-
@clickone אמר בUserInRole מחזיר שקר אחרי הוספת Role. איך אוכפים אתו לבדוק שנית ולא להסתמך על הקאש שלו:
@dovid מה שמלחיץ אותי זה המקרה ההפוך.
שיש הרשאה למשתמש בסשן, ותכלס הסרתי לו את ההרשאה.אז אתה חייב לכתוב פילטר משלך ולאותת לו על כל שינוי במסד.