Innerhalb meiner AuthenticateRequest-Ereignishandler ich Thread-Prinzipal festlegen. Here'a ein Teil meines IHttpModule:Thread.CurrentPrincipal.Identity in ASP.NET - ist es sicher zu verwenden
public void Init(HttpApplication context)
{
context.AuthenticateRequest += AuthenticateRequest;
}
private void AuthenticateRequest(object sender, EventArgs e)
{
var principal = CreatePrincipal();
HttpContext.Current.User = principal;
}
Aber ich habe eine Baugruppe, die keinen Zugriff auf System.Web haben sollte, so kann ich HttpContext.Current.User nicht verwenden, aber ich brauche, um aktuelle Prinzipal zugreifen. Mein allererster Gedanke war es, meine Methode zu ändern:
und verwenden Thread.CurrentPrincipal, wenn erforderlich.
Aber soweit ich mich erinnere, ist es nicht sicher, anforderungsspezifische Sachen in Thread Local Storage zu speichern, da mehrere Threads die gleiche Anfrage behandeln können, also denke ich, es ist das gleiche mit Thread.CurrentPrincipal. Oder nicht?
Es klingt wie Sie die Versammlung ändern können - ist es nicht möglich, es das Prinzip zu übergeben, gegen das es arbeiten muss? –
In einer ähnlichen Situation zwang ich kürzlich den Aufrufer, das Hauptobjekt bereitzustellen. – asawyer
Das werde ich machen - Principal injizieren. Wie auch immer, ich habe gehofft, dass es einen besseren Ansatz gibt. – dragonfly