Доступ к основным претензиям в уровне обслуживания в API приложения Net Core 6C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Доступ к основным претензиям в уровне обслуживания в API приложения Net Core 6

Сообщение Anonymous »

Мне нужно получить доступ к претензии principal в уровне сервиса приложения Net Core 6. Затрудняет тестирование, и, что более важно, это отличный пример emeaky абстракции.
Итак, теперь у меня есть следующее

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

  public class ClaimsProvider : IClaimsProvider
{
private readonly IHttpContextAccessor _httpContextAccessor;
public ClaimsProvider(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}

public ClaimsPrincipal? GetClaimsPrincipal()
{
return _httpContextAccessor.HttpContext?.User;
}
}

public interface IClaimsProvider
{
ClaimsPrincipal? GetClaimsPrincipal();
}
В моем startup.cs addscoped () , который принимает ihttpcontextaccorsor и возвращает iclaimsprovider. Тогда я просто строю все услуги против iCrailsProvider < /p>
builder.Services.AddScoped(provider =>
{
var httpContextAccessor = provider.GetRequiredService();
return new ClaimsProvider(httpContextAccessor);
});

< /code>
и обычный маршрут для моих услуг, где я вводит его как зависимость < /p>
private readonly IClaimsProvider _claimsProvider;
public SomeService(
IWebHostEnvironment hostingEnvironment,
IMapper mapper, IClaimsProvider claimsProvider, ...)
{
_hostingEnvironment = hostingEnvironment ??
throw new ArgumentNullException(nameof(hostingEnvironment));
_mapper = mapper ??
throw new ArgumentNullException(nameof(mapper));
_claimsProvider = claimsProvider;
}

public void SomeMethod()
{
var u = _claimsProvider.GetClaimsPrincipal();
foreach (var claim in u.Claims)
{
Console.WriteLine($"{claim.Type} : {claim.Value}");
}

}

< /code>
Мой вопрос в том, что это приведенный выше подход, хорошо? Потенциально, есть ли другой подход, который лучше, чем показанный выше?

Подробнее здесь: https://stackoverflow.com/questions/751 ... core-6-app
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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