. NET Core v3 не имеет UseIdentity () при сборке ApplicationBuidler в StartUp.cs - PullRequest
0 голосов
/ 17 июня 2020

Я обновил и столкнулся с этой проблемой, когда UseIdentity() недоступен в StartUp.cs при создании приложения (ApplicationBuilder).

Веб-сервис использует его, так какое исправление рекомендуется? Контроллер MVC имеет атрибут, проверенный на действительную идентичность. OnAuthorizationAsync в классе атрибутов фильтра действительно проверяет активную идентичность. Здесь пользовательская аутентификация basi c проходит в логине.

// Startup.cs

    public void Configure(IApplicationBuilder applicationBuilder, ILoggerFactory loggerFactory, IServiceProvider serviceProvider)
    {
        // Webservice API access.
        applicationBuilder.UseWhen(context =>
            !context.Request.Path.StartsWithSegments(new PathString("/api/v1")), 
            b => b.UseIdentity()
        );
        applicationBuilder.UseWhen(context => 
            !context.Request.Path.StartsWithSegments(new PathString("/api/v1")), 
            b => b.UseAuthentication()
        );
    }

// MerchantsV1Controller.cs

[TypeFilter(typeof(AuthorizeWithNoChallengeFilterAttribute))]
public class MerchantsV1Controller : Controller
{
}

// AuthorizeWithNoChallengeFilterAttribute.cs

public class AuthorizeWithNoChallengeFilterAttribute : IAsyncAuthorizationFilter
{
    public async Task OnAuthorizationAsync(AuthorizationFilterContext context)
    {
        if (!context.HttpContext.User.Identity.IsAuthenticated)
            context.Result = new UnauthorizedResult();

        await Task.CompletedTask;
    }
}
...