Die Klasse wird nach der Anmeldung in MudBlazor auf Null zurückgesetzt, weil die Seite neu geladen wird – wie kann ich dC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Die Klasse wird nach der Anmeldung in MudBlazor auf Null zurückgesetzt, weil die Seite neu geladen wird – wie kann ich d

Post by Anonymous »

Ich habe eine MudBlazor-Anwendung, in der ich einen benutzerdefinierten CurrentUserService verwende, um den aktuell angemeldeten Benutzer zu speichern, damit ich das Profilbild des Benutzers im Layout anzeigen kann.
Dieser Status ist nicht Teil des Authentifizierungsprozesses. Es enthält nur mein vollständiges Benutzerobjekt einschließlich des Profilbilds.

Code: Select all

CurrentUserService.cs

Code: Select all

internal sealed class CurrentUserService
{
internal User? LoggedInUser { get; private set; }

internal void SetUser(User user)
{
if (user.Image is not null && user.Image.ImageBytes is null)
{
user.Image.SetByteArray();
}

LoggedInUser = user;
}

internal void Logout()
{
LoggedInUser?.CleanUp();
LoggedInUser = null;
}
}
Registriert als:

Code: Select all

builder.Services.AddScoped();
Melden Sie sich in LoginDialog.razor an

Code: Select all

internal async Task PerformLogin()
{
var loggedInUser = await Data.User.Loader.ReadUsersForLogin(_username, _password);

if (loggedInUser != null)
{
await ((CustomAuthStateProvider)AuthStateProvider)
.ChangeUser(loggedInUser.UserName, loggedInUser.Id,
loggedInUser.Rank.ToString(), loggedInUser.LastName);

CurrentUserService.SetUser(loggedInUser);

MudDialog?.Close(DialogResult.Ok(true));
}
}
Abmelden in MainLayout.razor

Code: Select all

private async void LogOut()
{
var authState = await _authenticationStateProvider.GetAuthenticationStateAsync();
var user = authState.User;

if (user.Identity != null && user.Identity.IsAuthenticated)
{
await ((CustomAuthStateProvider)_authenticationStateProvider).Logout();

CurrentUserService.Logout();

StateHasChanged();
Navigation.NavigateTo(Navigation.Uri, forceLoad: true);
}
}
Rendering in MainLayout.razor

Code: Select all

@if (CurrentUserService.LoggedInUser != null && CurrentUserService.LoggedInUser.Image != null && CurrentUserService.LoggedInUser.Image.ImageBytes != null)
{

}
Problem
Nach der Anmeldung erscheint kurz das Benutzerbild, aber dann wird die Seite neu geladen und das Bild verschwindet. Die Seite wird neu geladen, da die Schaltflächen sonst nicht gerendert werden. LoggedInUser ist null.
Frage
Wie kann ich meinen CurrentUserService so beibehalten, dass er ein vollständiges Neuladen der Seite in einer MudbLazor-Anwendung übersteht, bis sich der Benutzer abmeldet?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post