Это состояние не является частью процесса аутентификации. Он содержит только мой полный объект пользователя, включая изображение профиля.
Код: Выделить всё
CurrentUserService.csКод: Выделить всё
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;
}
}
Код: Выделить всё
builder.Services.AddScoped();
Код: Выделить всё
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));
}
}
Код: Выделить всё
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);
}
}
Код: Выделить всё
@if (CurrentUserService.LoggedInUser != null && CurrentUserService.LoggedInUser.Image != null && CurrentUserService.LoggedInUser.Image.ImageBytes != null)
{
}
После входа в систему ненадолго появляется изображение пользователя, но затем страница перезагружается и изображение исчезает. Страница перезагружается, поскольку в противном случае кнопки не отображаются. LoggedInUser имеет значение null.
Вопрос
Как сохранить мой CurrentUserService, чтобы он выдержал полную перезагрузку страницы в приложении MudbLazor, пока пользователь не выйдет из системы?
Подробнее здесь: https://stackoverflow.com/questions/798 ... ow-can-i-p
Мобильная версия