1

ASP.NET MVC3WebアプリケーションプロジェクトでASP.NETメンバーシップを使用しています。

を使用してASP.NETメンバーシップテーブルをインストールしましたがAspnet_regsql.exe、メインuserTableにはaspnet_Usersの「UserId」を指す「userID」という外部キーがあります。

この「userTable」は多くのテーブルに接続されています。したがって、すべての操作で、ユーザーがログインしたときに使用したユーザー名を使用して、aspnet_Userからの「UserId」が必要になります。

このために私は使用します

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

これで、すべての操作について、この呼び出しをuser.ProviderUserKey行い、他の操作を続行する必要があります。

これを行うにはもっと良い方法が必要だと思います。これを行うための組み込みの方法はありますか?

4

4 に答える 4

1

ASP.NETメンバーシッププロバイダーは、ProviderUserKeyを提供することを目的としていません...おそらく代わりにユーザー名を使用できますか?Context.User.Identity.Nameを介していつでも簡単にアクセスできます。

于 2012-09-12T06:31:05.643 に答える
0

私はいつも使用します:

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

ユーザー情報を一度取得し、ユーザーデータが暗号化されたフォーム認証Cookieに入れます。

以降の呼び出しでは、ユーザー情報にContext.Identityを使用します

于 2012-09-12T07:34:38.220 に答える
0

たとえばDictionary<string, Guid>、キーがユーザー名(HttpContext.Current.User.Identity.NameまたはThread.CurrentPrincipal.Identity.Nameを使用して検索できます)とProviderUserKeyである場合など、関連情報をキャッシュ内に保持できます。は値です。

このディクショナリをオンデマンドで作成するか、一度初期化して、ASP.NETキャッシュ、セッション、またはアプリケーションに配置します(もちろん、シリアル化と同時実行の問題に注意してください)。

于 2012-09-12T08:58:34.543 に答える