gpt4 book ai didi

c# - 在 ASP.NET MVC 中存储全局对象

转载 作者:行者123 更新时间:2023-11-30 16:56:59 25 4
gpt4 key购买 nike

我目前正在构建一个具有用户登录名的相当大的 ASP.NET MVC 应用程序。某些方法/功能仅限于特定类型/角色的用户(不过不是常规的 ASP.NET 角色)并且在运行这些功能时,我必须检查数据库中是否有当前的、已记录的in 用户有权执行给定任务。

正如您可能想象的那样,这会导致对数据库进行多次调用以找到该人。因此,目前,对于每个页面加载和每个受限方法,我都在进行此调用:

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 对象包含一些敏感数据,我不确定这是否是个好主意 ;-)

非常感谢任何帮助!

提前致谢。

最佳答案

根据您希望的范围,您可以使用:

  • Session:对于当前用户,在当前导航 session 中(其他用户看不到);
  • 缓存:针对所有用户,有固定的到期时间;
  • 申请:适用于所有用户,不会过期。

对于缓存和应用程序,键可能由一些用户属性组成,例如 id 或 login。这些人 ( https://efcache.codeplex.com/ ) 已经为 Entity Framework 实现了二级缓存,可能值得一试。

关于c# - 在 ASP.NET MVC 中存储全局对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27248796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com