2012-07-10 35 views
0

所以我试图重用Membership.GetUser().ProviderUserKey来获取当前登录用户的用户ID,而不必在每次调用时重新获取密码。在MVC中重新使用ProviderUserKey而无需DB提取

到目前为止,我读过的所有内容都表示使用配置文件值,但是如果使用SQLProfileProvider将配置文件存储在SQL服务器上,那么与数据库往返相比,是否提供了任何优势?

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

  • 会话使用
  • 谱使用
  • 会员使用SQL提供

的应用程序在一个Web场运行,所以我需要利用一个SQL提供一个SQL提供SQL服务器,但希望在每台机器上缓存每个请求,而不是在每次需要时执行100次往返获取用户ID。

回答

3

User.Identity.Name是你在找什么。如果您使用的是Forms Authentication,则这仅仅来自认证客户端随每个请求自动发送的认证Cookie。为您提供当前认证的用户名。没有成员(a.k.a DB)访问权限。

如果要存储有关用户的其他信息,可以使用表单身份验证票证的user data部分和自定义的“授权”属性来检索来自Cookie的每个请求的自定义IPrincipal

+0

我很害怕User.Identity.Name将无法正常工作,我正在寻找获取主键(ProviderUserKey)而不是用户名,以便我可以插入其他表中存在用户表的FK。 – 2012-07-10 21:26:55

+0

然后,您必须将其作为表单身份验证Cookie的“用户数据”部分的一部分进行存储,以避免在每个请求中敲击数据库,因为我已在我的答案中对此进行了解释。有没有不清楚我的答案是否值得赞赏?有没有你不明白的东西?如果是这种情况,我很乐意详细说明。我只是认为这对每个人都是显而易见的。显然我错了,有些人不明白。 – 2012-07-10 21:28:23

+0

我实际上指的是downvoted的人。如果他留下评论,解释他在这个失败背后的动机本来是很好的。 – 2012-07-10 21:34:53

相关问题