ASP.net MVC删除重复的数据调用

时间:2010-11-09 07:19:55

标签: asp.net-mvc-2 asp.net-authentication data-caching

我有一个asp.net mvc网站,可以使用ASP.net身份验证。我有一个UserInformation表,它存储有关每个用户的额外信息。我几乎每个页面都调用数据库来为当前用户提取至少一次UserInformation记录。

我认为所有这些重复数据调用相同的信息必须是矫枉过正的。无论如何我可以减少这些吗?缓存?存储用户信息记录以备将来使用等?

我相信我不是第一个遇到这个问题的人,所以我不想重新发明轮子。

提前致谢

1 个答案:

答案 0 :(得分:2)

您可以使用自定义IIdentity和IPrincipal。这是一个很好的article,描述了如何实现这一点(有趣的部分发生在btnAuthenticate_Click方法中,在ASP.NE MVC应用程序中将是身份验证控制器操作,这里是自定义的身份验证票据数据)。在此示例中,想法是手动创建身份验证票证,并使用userData属性存储其他信息。如果您有大量数据,这可能不适合您的情况,因为它存储在cookie中。但是,不是使用userData,而是将其存储在其他地方,如Session或Cache。您还可以编写自定义[Authorize]属性来处理自定义主体(与文章中的Application_AuthenticateRequest方法对应的部分应该放在此自定义授权过滤器中,以便重新构建用户)。