1

我在 ASP.NET MVC 3 Web 应用程序项目中使用 ASP.NET Membership。

我已经使用安装了 ASP.NET 成员表Aspnet_regsql.exe,现在我的主userTable有一个名为“userID”的外键,它指向 aspnet_Users 的“UserId”。

这个“userTable”连接到许多表。因此,现在对于每个操作,我都需要使用用户登录的用户名从 aspnet_User 获取“UserId”。

为此,我使用

 MembershipUser user = Membership.Provider.GetUser(username, true);

现在对于每一项操作,我都必须拨打这个电话并user.ProviderUserKey继续我的其他操作。

我认为必须有更好的方法来做到这一点。有任何内置方法可以做到这一点吗?

4

4 回答 4

1

ASP.NET Membership Provider 不打算提供 ProviderUserKey ...也许您可以改用用户名?您始终可以通过 Context.User.Identity.Name 轻松访问它。

于 2012-09-12T06:31:05.643 回答
0

You can keep the relevant information around in the cache, for example in a Dictionary<string, Guid> where the key is the user name (which you can lookup using HttpContext.Current.User.Identity.Name or Thread.CurrentPrincipal.Identity.Name), and the ProviderUserKey is the value.

Build this dictionary either on-demand or initialize it once, and put it in the ASP.NET Cache, Session or Application (of course watch our for serialization and concurrency issues).

于 2012-09-12T08:58:34.543 回答
0

您获取一次用户信息并将其放入表单身份验证 cookie中,并加密用户数据。

对于后续调用,您使用Context.Identity作为用户信息

于 2012-09-12T07:34:38.220 回答
0

我总是使用:

Guid userId = (Guid)Membership.GetUser().ProviderUserKey;
于 2012-09-12T06:47:44.063 回答