ASP.NET MVC 3イントラネットアプリケーションは、Windowsユーザー認証を利用し、ユーザーが管理セクション(承認)にアクセスするための特定の役割を持っていることも要求します。これはすべて機能しますが、ユーザーのロールメンバーシップのチェックは非常に遅いことがわかります(約20秒)。User.IsInRole
メソッドまたはのいずれかを使用しますAuthorizeAttribute
。ADグループではなくローカルのAdministratorsグループ('BUILTIN \ Administrators')に対してチェックしても、それでも同じくらい遅いです。
さて、ユーザー認証を高速化するために従うことができるいくつかの推奨スキームはありますか?たとえば、ユーザーの認証ステータスをデータベースにキャッシュするのは一般的ですか?より根本的に、ローカルグループ(「管理者」)に対する承認がこれほど遅いので、何か怪しいことが起こっていますか?
編集:
Webサーバーは、Windows 2008 R2 SP1 x64、.NET 4.0、IIS 7.5、4GBRAMで実行されています。ただし、開発マシンでユーザーロールのメンバーシップを照会するのと同じレイテンシーが発生するため、問題はアプリが実行されているマシンとは無関係のようです。ユーザーが「BUILTIN\Administrators」のメンバーであるかどうかのクエリに時間がかかるため、DBMSは重要ではないと思います(問題を単純化するために、このローカルグループをチェックしているだけです)。