如何在Asp.NET Identity中缓存ApplicationUser?

时间:2016-08-01 03:24:14

标签: c# asp.net asp.net-mvc-5

我们可以通过这种方式获得ApplicationUser

var owinContext = HttpContext.GetOwinContext();
var userManager = owinContext.GetUserManager<ApplicationUserManager>();
var user = await userManager.FindByIdAsync(User.Identity.GetUserId());

为此,我们需要在UserStore IUserStore<TUser, in TKey>中实现此方法:

Task<TUser> FindByIdAsync(TKey userId);

此方法通过数据库加载应用程序用户(在我的情况下通过实体框架)。我将在我的应用程序的不同层中需要此对象。在当前状态下,它将导致仅针对一个Web请求的多个数据库请求(对于同一对象)。

缓存此对象的推荐方法是什么?

我想到了一个Session对象,但我100%肯定,这很愚蠢,因为有时用户对象可以更改(密码,电子邮件,显示名称等)。

0 个答案:

没有答案