Пользовательское промежуточное ПО ASP.NET после авторизации/аутентификации ⇐ C#

Место общения программистов C#
Anonymous
Пользовательское промежуточное ПО ASP.NET после авторизации/аутентификации

Сообщение Anonymous »

Мне хотелось, чтобы мой API поддерживал AOT, поэтому я решил отказаться от контроллеров MVC.
Однако мне не нравится минимальный подход API, поэтому я решил написать собственное промежуточное программное обеспечение для обработки запросов и ответов вручную (с собственной генерацией кода, но это не важно).

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

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

app.UseMiddleware();
Проблема в том, что перестала работать аутентификация/авторизация. HttpContext.User не настроен, утверждения пусты, IsAuthenticated всегда имеет значение false даже после промежуточного программного обеспечения аутентификации/авторизации.

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

public async Task InvokeAsync(HttpContext context)
{
Debug.WriteLine(context.User.Identity.IsAuthenticated); //always false
}
Думаю, это имеет смысл. Я использую две схемы аутентификации и несколько политик, и я хочу вручную определить, какую политику необходимо применить к другому пути запроса, например:

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

//EXAMPLE
public async Task InvokeAsync(HttpContext context)
{
if (context.Request.Path.Value == "/auth-request")
{
var result = authenticationService.Authenticate("policyName");

//if authentication fails, return 401
//otherwise user is authenticated
//process request as usual
}
}
Но я понятия не имею, как это сделать.
Как MVC это делает? Как это делает минимальный API?
Как проверить аутентификацию/авторизацию, настроенную с помощью таких методов, как AddJwtBearer,

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

AddScheme,AddAuthorization,AddPolicy
и т. д. в пользовательском промежуточном программном обеспечении запросов/ответов?[/b]

Подробнее здесь: https://stackoverflow.com/questions/784 ... entication

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