Альтернатива ActionFilterAttribute в ядре ASP.net - PullRequest
1 голос
/ 28 октября 2019

Я пытаюсь аутентифицировать пользователей в моем приложении asp.net core 2.2. Вот как мы используем это в веб-интерфейсе asp.net, используя .net 4.5

public class AuthFilter : ActionFilterAttribute, IActionFilter
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
          //based on certain condition
filterContext.Result = new UnauthorizedResult();
    } 

}

Я не могу добиться того же в ядре asp.net 2.2. Единственное изменение: Мне нужно реализовать эту логику только для нескольких маршрутов. Так что в основном мне нужно сначала проверить маршрут, а затем аутентифицировать пользователей только для этих роутов . Это то, что я нашел до сих пор:

public class CustomAuthenticationSchemeProvider : AuthenticationSchemeProvider
{
    private readonly IHttpContextAccessor httpContextAccessor;

    public CustomAuthenticationSchemeProvider(
        IHttpContextAccessor httpContextAccessor,
        IOptions<AuthenticationOptions> options)
        : base(options)
    {
        this.httpContextAccessor = httpContextAccessor;
    }

    private async Task<AuthenticationScheme> GetRequestSchemeAsync()
    {
        var request = httpContextAccessor.HttpContext?.Request;
        if (request == null)
        {
            throw new ArgumentNullException("The HTTP request cannot be retrieved.");
        }

        // For API requests, use authentication tokens.
        if (request.Path.StartsWithSegments("/api"))
        {
            return await GetSchemeAsync(OAuthValidationDefaults.AuthenticationScheme);
        }

        // For the other requests, return null to let the base methods
        // decide what's the best scheme based on the default schemes
        // configured in the global authentication options.
        return null;
    }


}

Я не уверен, как реализовать этот «GetSchemeAsync». Я также не уверен, что я пытаюсь достичь правильного пути или нет

1 Ответ

0 голосов
/ 28 октября 2019

Используйте атрибут Authorize в вашем действии контроллеров, где вам нужно авторизовать пользователя читать документ

Если вы хотите быть более глобальным, вы можете использовать Авторизацияфильтр

...