Wie passen Sie die Standard -Windows -AutheticationStateProvider in die Blazor Server -App an?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Wie passen Sie die Standard -Windows -AutheticationStateProvider in die Blazor Server -App an?

Post by Anonymous »

Ich habe eine Blazor -Server -App, die die Windows -Authentifizierung verwendet, um Benutzer zu identifizieren. > Ich habe eine Klasse geschrieben, die in Benutzername angemeldet ist und Rollen aus einer Datenbank bewirkt, und dann den aktuellen Principal so aktualisiert, dass die Benutzeroberfläche die angegebenen Rollen für die ordnungsgemäß nutzen kann Benutzer.
Ich vermeide EntityFramework- und Core -Identitäts -Gerüstcode aus Gründen, die ich hier nicht teilen kann. p>

Code: Select all

public class CompanyAuthentication
{
public CompanyAuthentication(AuthenticationStateProvider auth)
{
var result = auth.GetAuthenticationStateAsync().Result;
// here I have access to the current username:
string username = result.User.Identity.Name;
// now I can fetch roles from file, but for simplicity, I will use the following:
if(username.BeginsWith("admin"))
{
var claims = new ClaimsIdentity(new Claim[] {new Claim(ClaimType.Role, "admin")});
result.User.AddIdentity(claims);  // this will have an effect on UI
}

}
}
< /code>
Ich habe auch die obige Klasse als Dienst in startup.cs < /p>
hinzugefügtservices.AddScoped();
< /code>
Jetzt, auf jeder Rasierseite, mache ich einfach: < /p>
@page "/counter"
@inject CompanyAuthentication auth


 Welcome admin 
 You are not authorized 

Das funktioniert alles einwandfrei, solange ich nicht vergesse, die FirmaAuthentication auf jeder Seite zu injizieren, die ich verwenden möchte.
Gibt es eine Möglichkeit, meine Klasse automatisch in jede Seite zu injizieren, ohne @Inject ?
Ich bin mir bewusst, dass ich eine benutzerdefinierte Authentifizierungsklasse schreiben kann Als Service, aber wenn ich das tue, verliere ich den Zugriff auf den aktuell angemeldeten Benutzernamen und ich kann daher keine Rollen aus der Datenbank abrufen. .User.ididentity.name Aber das liegt nicht im Bereich eines Teils in einer Balzor -Server -App.
Wie kann ich Windows nutzen AuthenticationStateProvider und gleichzeitig ihre Rollen anpassen, ohne die Anpassung überall injizieren zu müssen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post