Пользовательское промежуточное ПО 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
Ответить

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

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

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

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

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