因此,我尝试重用Membership.GetUser().ProviderUserKey
来获取当前登录用户的UserID,而无需在每次调用时重新获取。
到目前为止我读到的所有内容都说使用了配置文件值,但是如果使用SQLProfileProvider
将配置文件存储在SQL服务器上,那么这会比数据库往返更有优势吗?
有没有办法在MVC中声明一次获取的对象(对于每个HTTP Post,我意识到这不能在多个回发中重复使用)。
应用程序在Web场上运行,因此我需要使用SQL服务器,但是希望在每个请求上基于每台计算机进行缓存,而不是每次需要时进行100次往返以获取UserID。
答案 0 :(得分:3)
User.Identity.Name
正是您要找的。如果您使用Forms Authentication,这只是来自身份验证cookie,经过身份验证的客户端会自动发送每个请求。为您提供当前经过身份验证的用户名。没有会员资格(a.k.a DB)访问。
如果要存储有关用户的其他一些信息,可以使用表单身份验证票证的user data
部分和自定义Authorize属性,以便从cookie中的每个请求中检索自定义IPrincipal
。