2

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

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

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

提前致谢

4

1 回答 1

2

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

于 2010-11-09T07:47:25.710 回答