我创建了自定义会员供应商,对我来说,在MembershipUser.ProviderUserKey
而不是UserName上操作更方便。因此,要检索ProviderUserKey
我执行这样的代码:ASP.NET User.Identity.Name替代方案?
if (User.Identity.IsAuthenticated)
{
int UserID = (int)Membership.GetUser(User.Identity.Name).ProviderUserKey;
}
然而,当执行GetUser()
方法,用户必须将数据从数据库中检索,这是窃听我。这对于服务器时间来说是不必要的浪费,不管这段时间有多短,我都想避免它。
有没有其他方法可以以更方便的方式获得ProviderUserKey
,例如在User.Identity.Name
的情况下?
我想听听您的想法。你如何解决你的网页上的这个问题?
谢谢。
谢谢,你能指点我一些相关的信息如何做到这一点?我发现的所有问题都涉及.NET 1.1,我希望在3.5版本的框架中做到这一点。 – Wodzu 2010-11-18 11:10:03
这是[一篇文章](http://www.xoc.net/works/tips/forms-authentication.asp),它演示了如何使用GenericPrincipal并在Cookie中存储附加信息。这个想法是用这个自定义主体替换HttpContext.Current.User,以便它可以在任何地方访问。 – 2010-11-18 11:12:21
谢谢,但据我了解这个例子是基于自己的控制。我将不得不重写标准行为......如果我正在使用标准登录控件,该怎么办?我不能扩展某些类以公开一个属性,以稍后在我的应用程序中以方便的方式进行修改吗? – Wodzu 2010-11-18 11:20:06