Dieser Status ist nicht Teil des Authentifizierungsprozesses. Es enthält nur mein vollständiges Benutzerobjekt einschließlich des Profilbilds.
Code: Select all
CurrentUserService.csCode: 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;
}
}
Code: Select all
builder.Services.AddScoped();
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));
}
}
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);
}
}
Code: Select all
@if (CurrentUserService.LoggedInUser != null && CurrentUserService.LoggedInUser.Image != null && CurrentUserService.LoggedInUser.Image.ImageBytes != null)
{
}
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?
Mobile version