我正在使用帶有特殊角色「必須更改密碼」的ASP.NET角色。如果用戶的密碼超過90天未更改,則會自動添加到此角色。這發生在用戶登錄過程中。授權規則然後拒絕該角色訪問除「更改密碼」頁面之外的所有應用程序。ASP.NET問題在Cookie中緩存角色
通常情況下,這種方式效果很好,但角色緩存Cookie用於緩存角色時存在問題。會發生什麼情況是在登錄過程中,密碼上次更改日期被檢查,如果> 90天,用戶被添加到「必須更改密碼」角色。在相同的頁面請求中,我隨後調用Roles.IsUserInRole(「必須更改密碼」)來決定是否將用戶重定向到更改密碼頁面。這是崩潰的地方 - 似乎啓用角色緩存cookie後,Roles.IsUserInRole(「必須更改密碼」)沒有意識到我已更改此用戶的角色映射,並返回false。但是,在下一頁請求中,Roles.IsUserInRole(「必須更改密碼」)返回true。
此行爲已通過設置cacheRolesInCookie =「false」得到解決,但似乎付出了很高的代價。有其他解決這個問題的方法嗎?