我們有一個非常大的網頁應用程序,有很多頁面。這些頁面要求我們瞭解用戶的角色以正確顯示內容。所以在Application_AuthenticationRequest,我們有這樣的代碼:如何持久化Application_AuthenticateRequest中所需的會話特定值?
var id = new GenericIdentity(Request.Headers["ceid"]);
var rp = new MyRoleProvider();
var principal = new GenericPrincipal(id, rp.GetRolesForUser(id.Name));
Context.User = principal;
的問題是,我們需要使用Web服務來獲取角色,並因爲呼叫正在盡一切每次用戶訪問一個頁面時,網頁服務正遭受太多次打擊。
理想的解決辦法是,如果我們可以在角色存儲在一個會話變量,不過,會議沒有Application_AuthenticateRequest可用。我們考慮在應用程序變量中存儲一個包含所有用戶條目的字典,但我希望能找到更好的解決方案。
有沒有我們可以存儲在這樣一種方式,他們將可裏面Application_AuthenticationRequest當前用戶的角色什麼辦法?我們非常安全,一個cookie是否是一個有效的選擇?
您是否知道有外的即用功能,以「緩存」用戶的角色在cookie ? https://msdn.microsoft.com/en-us/library/system.web.security.roles.cacherolesincookie%28v=vs.110%29.aspx –
如果你想使用Roles API,很多人都是自己的角色,因此存儲在具有HttpOnly(僅在服務器上可用)設置爲true的cookie是一個很好的解決方案。 –
如果您不喜歡使用cookie,可能是[MemoryCache](https://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache%28v=vs.110%29.aspx)是可能的解決方案? –