在没有DB提取的情况下在MVC中重用ProviderUserKey

时间:2012-07-10 21:11:43

标签: c# asp.net-mvc-3 caching asp.net-membership

因此,我尝试重用Membership.GetUser().ProviderUserKey来获取当前登录用户的UserID,而无需在每次调用时重新获取。

到目前为止我读到的所有内容都说使用了配置文件值,但是如果使用SQLProfileProvider将配置文件存储在SQL服务器上,那么这会比数据库往返更有优势吗?

有没有办法在MVC中声明一次获取的对象(对于每个HTTP Post,我意识到这不能在多个回发中重复使用)。

  • 会话正在使用SQL提供程序
  • 个人资料正在使用SQL提供商
  • 成员资格使用SQL提供程序

应用程序在Web场上运行,因此我需要使用SQL服务器,但是希望在每个请求上基于每台计算机进行缓存,而不是每次需要时进行100次往返以获取UserID。

1 个答案:

答案 0 :(得分:3)

User.Identity.Name正是您要找的。如果您使用Forms Authentication,这只是来自身份验证cookie,经过身份验证的客户端会自动发送每个请求。为您提供当前经过身份验证的用户名。没有会员资格(a.k.a DB)访问。

如果要存储有关用户的其他一些信息,可以使用表单身份验证票证的user data部分和自定义Authorize属性,以便从cookie中的每个请求中检索自定义IPrincipal