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...)
אהבתי את הרעיון שלהם להחזיק את זה בקאש, פחות אהבתי את ההתנהגות הזו שלא יודעת להבין לבד באותה אפליקצייה שהוספתי / הורדתי למשתמש רול.....
רעיונות?
-
כעת חשבתי על רעיון נוסף, שתוכל לרשת מהautorize ומתי שהוא ידחה אותו, אז תבצע לוגאין מחדש, ותנסה שוב. צריך לבדוק את זה.
-
זה יעבוד גם מאפליקציה לאחרת כי זה מרענן את העוגיה.
זה יקרה רק במידה וההרשאה נדחתה - משתמש לא מורשה, אז זה ינסה להנכיס אותו מחדש תוך קריאה לDB.
זה לא משהו שיקרה כל הזמן שמשתמש ייגש לאיזור שאין לו הרשאה. -