Аутентификация Blazor DIC#

Место общения программистов C#
Ответить
Anonymous
 Аутентификация Blazor DI

Сообщение 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.
Чего мне не хватает?

Подробнее здесь: https://stackoverflow.com/questions/790 ... on-di-voes
Ответить

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

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

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

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

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