0

私は情報やドキュメントなどを共有するためのポータルシステムに取り組んでいます。各ユーザーは複数のプロファイルを持つことができます。これにより、各プロファイルは異なる役割と権限を持つことができます。これですべてが正常に機能していますが、MembershipProviderとMembershipUserについて質問があります。

カスタムMembershipProviderとMembershipUserをOpenAccessORMと組み合わせて使用​​しています。

私はに大きく依存してい(CustomMembershipUser)Membership.GetUser()ます。たとえば、ログインしているユーザーと選択できるプロファイルを確認できるユーザーメニューを作成します。

このメニューを作成し、現在のプロファイルのグループ、役割、およびアクセス許可を収集するためMembership.GetUser()に、コード内のさまざまな場所からからの呼び出しが多数あります。最初にユーザーをキャッシュし、ProviderUserKeyに基づいてこれを返しましたが、これは安全ではないと言われました。そこで、キャッシュを削除しましたが、はるかに高速でした。これに代わるベストプラクティスはありますか?

4

2 に答える 2

0

結果をキャッシュするか、毎回計算するか、状況に応じた100%の解決策はありません。キャッシュがアプリケーションにリスクをもたらす場合は、キャッシュポリシーを非常に注意深く構成することが重要です。

Afaik、キャッシュは非常にまれな状況でリスクを引き起こしますが、変更をすぐに適用する必要がある場合に限ります。キャッシュ依存関係などの高度なキャッシュポリシーの使用を検討してください。

于 2012-11-21T10:15:45.823 に答える
0

セッションは、あなたの説明に基づいた適切な解決策です。十分安全です。HttpContext.Items ["MembershipUser"]は、セッションが期限切れになるまで情報を保持している間、1つのhttpリクエスト内にのみユーザー情報を保持します。

ただし、キャッシュはユーザーごとではなくアプリケーションごとにあります

于 2012-11-21T10:58:17.797 に答える