ASP.NET Core - получение сообщения от AuthenticationHandler - PullRequest
1 голос
/ 24 апреля 2019

Я реализовал подкласс AuthenticationHandler. Возвращает AuthenticationResult.Fail("This is why you can't log in");

Я бы ожидал, что это сообщение окажется в теле или, по крайней мере, в тексте статуса HTTP, но вместо этого я получу пустой ответ 401.

Есть ли способ предоставить дополнительную информацию для неудачных попыток аутентификации в ядре ASP.NET?

1 Ответ

0 голосов
/ 25 апреля 2019

Для изменения тела или статуса Http, вы можете попробовать Context.Response.

Вот демонстрационный код:

using Microsoft.AspNetCore.Authentication;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using System.Text.Encodings.Web;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
namespace TestIdentity
{
    public class CustomAuthenticationHandler<TOptions> : AuthenticationHandler<TOptions> where TOptions : AuthenticationSchemeOptions, new()
    {
        public CustomAuthenticationHandler(IOptionsMonitor<TOptions> options
            , ILoggerFactory logger
            , UrlEncoder encoder, ISystemClock clock) : base(options, logger, encoder, clock)
        {

        }
        protected override async Task<AuthenticateResult> HandleAuthenticateAsync()
        {
            await Context.Response.WriteAsync("This is why you can't log in");
            return AuthenticateResult.Fail("This is why you can't log in");
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...