Класс сбрасывается до нуля после входа в систему в MudBlazor, поскольку страница перезагружается – как я могу сохранить C#

Место общения программистов C#
Ответить
Anonymous
 Класс сбрасывается до нуля после входа в систему в MudBlazor, поскольку страница перезагружается – как я могу сохранить

Сообщение Anonymous »

У меня есть приложение MudBlazor, в котором я использую пользовательский CurrentUserService для хранения текущего пользователя, вошедшего в систему, чтобы я мог отобразить изображение профиля пользователя в макете.
Это состояние не является частью процесса аутентификации. Он содержит только мой полный объект пользователя, включая изображение профиля.

Код: Выделить всё

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();
Войти в LoginDialog.razor

Код: Выделить всё

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));
}
}
Выход в MainLayout.razor

Код: Выделить всё

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);
}
}
Рендеринг в MainLayout.razor

Код: Выделить всё

@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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»