1

カスタム メンバーシップ プロバイダーを作成しましたがMembershipUser.ProviderUserKey、UserName よりも操作が便利です。したがって、取得するProviderUserKeyには、次のようなコードを実行します。

if (User.Identity.IsAuthenticated)
{
  int UserID = (int)Membership.GetUser(User.Identity.Name).ProviderUserKey;
}

ただし、GetUser()メソッドが実行されると、データベースからユーザーデータを取得する必要があり、これが私を悩ませています。これはサーバー時間の不必要な浪費です。この時間がいくら短くても、避けたいと思います。

ProviderUserKey場合のように、より便利な方法で取得する他の方法はありますUser.Identity.Nameか?

あなたのアイデアを聞きたいです。Web ページでこの問題をどのように解決しますか?.

ありがとう。

4

2 に答える 2

5

この情報が保存される唯一の場所であるため、Membership API がデータベースにヒットしています。User.Identity.Nameログに記録されたユーザー名を、リクエストごとに送信される Cookie から取得しています。userDataカスタム汎用プリンシパルを実装し、Cookie で暗号化される認証チケットの一部に必要な情報を格納できます。これは、このトピックをカバーする記事です。

于 2010-11-18T11:05:00.477 に答える
3

最初のログイン時にデータベースから読み取りProviderUserKey、ユーザーのセッション コレクションに保存しますか? 後続のリクエストでは、データベースにアクセスせずにセッションから取得できます。

于 2010-11-18T11:36:04.120 に答える