AuthenticateRequest イベント ハンドラー内で、スレッドのプリンシパルを設定しました。ここに私の IHttpModule の一部があります:
public void Init(HttpApplication context)
{
context.AuthenticateRequest += AuthenticateRequest;
}
private void AuthenticateRequest(object sender, EventArgs e)
{
var principal = CreatePrincipal();
HttpContext.Current.User = principal;
}
しかし、System.Web にアクセスできないアセンブリがあるため、HttpContext.Current.User は使用できませんが、現在のプリンシパルにアクセスする必要があります。私の最初の考えは、私の方法を次のように変更することでした。
System.Threading.Thread.CurrentPrincipal = HttpContext.Current.User = principal;
必要に応じて Thread.CurrentPrincipal を使用します。
しかし、私が覚えている限り、複数のスレッドが同じリクエストを処理できるため、スレッドローカルストレージにリクエスト固有のものを保存することは安全ではないため、Thread.CurrentPrincipalと同じだと思います。か否か?