5

Ich habe eine Klasse, die ClaimsIdentity als eine Abhängigkeit wie so hat:Erste das ClaimsPrincipal oder ClaimsIdentity von innen ASP.NET Core-Dependency Injection

öffentlicher ClaimsIdentityDecorator (ClaimsIdentity Identität)

, die angeblich der Anspruch des aktuellen Benutzers sein. Ich abrufen es wie über die IHttpContextAccessor wie so:

services.AddScoped(x=> 
{ 
    var context = x.GetService<IHttpContextAccessor>(); 
    return context.HttpContext.User.Identity as ClaimsIdentity; 
}); 

Ich brauche einen Benutzer Anspruch zu überprüfen, und es scheint, dass ClaimsIdentity oder ClaimsPrincipal oder ein anderes Identitätsobjekt würde automatisch für mich injiziert werden. Es aus dem HttpContext abzurufen und es selbst hinzuzufügen, ist in Ordnung. Wenn jedoch ein anderes Objekt oder eine andere Schnittstelle vorhanden ist, für die bereits Ansprüche bestehen, möchte ich meine Klassen so entwerfen, dass sie diese Abhängigkeit übernehmen.

Auch ich möchte nur sicherstellen, dass dies auf der Scope-Ebene injiziert werden sollte.

+0

Warum injizieren Sie nicht einfach "IHttpContextAccessor" in die abhängigen Klassen und extrahieren Sie den Benutzer aus dem Kontext nach Bedarf. – Nkosi

+0

@Nkosi, weil ich nur den aktuellen Benutzer will, und seine Ansprüche. nicht der gesamte http-Kontext. –

Antwort

3

Es gibt keinen eingebauten Weg, um eine ClaimsIdentity, die ich kenne, aber Sie wollen wahrscheinlich AddTransient. Wenn sich ein Benutzer abmeldet, die Instanz jedoch zu Beginn der Anforderung erstellt wurde, wird diese Änderung nicht in der Datei AddScoped angezeigt.

Verwandte Themen