我们有一个非常大的网页应用程序,有很多页面。这些页面要求我们了解用户的角色以正确显示内容。所以在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)是可能的解决方案? –