Blazor benutzerdefinierte Authentifizierungszustand basierend auf Rollen unter Verwendung von AnsprüchenidentitätC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Blazor benutzerdefinierte Authentifizierungszustand basierend auf Rollen unter Verwendung von Ansprüchenidentität

Post by Anonymous »

Ich verwende CustomAuthentication, um das Wetter zu validieren. Ein Benutzer hat Zugriff auf eine bestimmte Seite < /p>
Im Moment kann meine Seite basierend auf < /p>
@attribute [Autorize]
allein < /p>
, aber ich möchte mich auf Rollen beruhigen. /> @attribute [autorize (roles = "admin")] < /p>
Wenn ich dies anwendepublic class AuthService : AuthenticationStateProvider
{

private HttpClient _client;

public AuthService(HttpClient client)
{

_client = client;
Console.WriteLine(_client.BaseAddress);

}

public override async Task GetAuthenticationStateAsync()
{
try
{
var person = System.Security.Principal.WindowsIdentity.GetCurrent()?.Name;

string temp = "personnamehere";

var userinfo = await _client.GetFromJsonAsync($"/api/BlazorAppAuthService/Users/{temp}");

if (userinfo is null)

{
return new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity()));
}

var claims = new List
{
new Claim(ClaimTypes.Name, person),
new Claim(ClaimTypes.Role, userinfo.Role.ToLower())

};

var identity = new ClaimsIdentity(claims, "Windows");
var user = new ClaimsPrincipal(identity);

foreach (var claim in claims)
{
Console.WriteLine($"{claim.Type} : {claim.Value}");
}

var authState = new AuthenticationState(user);

NotifyAuthenticationStateChanged(Task.FromResult(authState));

return authState;

// var role = await _client.GetFromJsonAsync("");

}
catch (Exception ex)
{
return new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity()));
}

}//end of function
}
< /code>
} < /p>
Ich verwende einen Temperaturwert, der in meinem DB gespeichert ist, um die Rolle zu spielen. Dies ist vorübergehend
Program.cs (Snippet von zutreffenden Zeilen)
builder.services.addauthorizationCore();
Builder.Addauthentication (negotiatiDiateds /> var app = builder.build (); < /p>
app.useAuthentication();
app.useAuthorisierung();

Jede Hilfe wäre geschätzt

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post