Проблема аутентификации Blazor: внедренная служба имеет пустое состояниеC#

Место общения программистов C#
Anonymous
Проблема аутентификации Blazor: внедренная служба имеет пустое состояние

Сообщение Anonymous »

Я пишу свое первое серверное приложение Blazor (.NET 8) и борюсь с логикой аутентификации: при внедрении в службу информация о пользователе/аутентификации пуста.
У меня есть простой сервис для хранения информации о пользователе после входа в систему:

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

public class UserService
{
private string _username = string.Empty;
public string Username => _username;
public bool IsAuthenticated => !string.IsNullOrEmpty(_username);

public void SetUser(string username)
{
_username = username;
}

public void ClearUser()
{
_username = "";
}
}
При внедрении в службу имя пользователя всегда пусто:

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

public class TestService
{
private string Username { get; set; }

public TestService(UserService userService)
{
Username = userService.Username;  provider.GetRequiredService());

builder.Services.AddAuthorizationCore();

var app = builder.Build();
app.UseSession();

app.UseHttpsRedirection();

app.UseStaticFiles(); ;
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();

app.UseAntiforgery();

app.MapControllers();
app.MapRazorPages();

app.MapRazorComponents().AddInteractiveServerRenderMode();

app.Run();
Когда пользователь входит в систему, имя пользователя правильно передается в NotifyUserAuthentication в CustomAuthenticationStateProvider (который вызывает _userService.SetUser) и в GetAuthenticationStateAsync.
Только в конструкторе службы имя пользователя пусто.
Я использую VS2022, и приложение позже также будет работать под IIS.
Чего мне не хватает?
Обновление от 15.10.2024:
Я загрузил минимальный воспроизводимый пример на Google Диск. Не стесняйтесь загрузить его, чтобы воспроизвести проблему:
Runnable MRE

Подробнее здесь: https://stackoverflow.com/questions/790 ... mpty-state

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