我目前正在使用用户登录构建一个相当大的ASP.NET MVC应用程序。某些方法/函数仅限于特定类型/角色的用户(不是常规ASP.NET角色),并且在运行这些函数时,我必须检查数据库中是否有当前的,已记录的用户有权执行给定的任务。
由于您可能可以进行成像,因此会导致对数据库进行大量调用以获取此人。所以,目前,对于每个页面加载和每个受限制的方法,我正在进行此调用:
var person = ctx.People
Include("Person_Firm_PersonResponsibility.Firm")
.Include("Person_Firm_PersonResponsibility.PersonResponsibility")
.Include("Person_Firm_PersonOption.PersonOption")
.Include(x => x.City)
.Include(x => x.Country)
.FirstOrDefault(x => x.ID == personId);
因为我需要全局显示数据的所有这些信息。
有没有办法简单地进行一次这样的调用(即当用户登录时),然后将该对象存储在某个地方供以后使用?显然,可以使用Session变量,但由于person对象包含一些敏感数据,我不确定这是不是一个好主意; - )
非常感谢任何帮助!
提前致谢。
答案 0 :(得分:1)
根据您希望的范围,您可以使用:
对于缓存和应用程序,密钥可能由某些用户属性组成,例如id或login。 这些人(https://efcache.codeplex.com/)为实体框架实现了二级缓存,可能值得一试。