Аутентификация с System.Web.Http.ApiController + Почтальон - не достигнув точек останова / не уверен, как это работает - PullRequest
0 голосов
/ 21 ноября 2018

Я следую этому руководству , чтобы реализовать аутентификацию в API, и Почтальону, чтобы проверить его.

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

Если я удаляю тег [Authorize], запускается метод Get(), я вхожу в точку останова и получаю ожидаемый ответ.Однако, если есть [Authorize], Почтальон отвечает:

{"Message": "Авторизация была отклонена для этого запроса."}

Что также являетсяОднако я ожидаю, что я не достигаю никаких точек останова, поэтому я не могу выяснить, где происходит эта логика аутентификации

Где бы я разместил логику аутентификации, то есть, где я запросил бы базу данных, чтобы узнать,имя пользователя / пароль соответствуют записям.

Это код, с которым я работаю

 public class X: ApiController
 {
    private void SetPrincipal(IPrincipal principal)
    { // breakpoint
        Thread.CurrentPrincipal = principal;
        if (HttpContext.Current != null)
        {
            HttpContext.Current.User = principal;
        }
    }

    public static void Register(HttpConfiguration config)
    { // breakpoint
        config.Filters.Add(new AuthorizeAttribute());
    }

    public HttpSessionStateBase Session;

    [Authorize]
    public string Get()
    { // breakpoint
      ...
    }

1 Ответ

0 голосов
/ 21 ноября 2018

Благодаря Элиасу Эсне , предоставившему этот пример

Я внес следующие изменения

Добавил втот же файл

public class CustomAuthorization : AuthorizeAttribute
{
    public override void OnAuthorization(HttpActionContext actionContext)
    {
        AuthenticationHeaderValue authenticationHeaderValue = actionContext.Request.Headers.Authorization;
        var userNamePasswordString = Encoding.UTF8.GetString(Convert.FromBase64String(authenticationHeaderValue.Parameter));
    }
}

изменил метод Register()

public static void Register(HttpConfiguration config)
{
    config.Filters.Add(new CustomAuthorization());
}

и атрибут Get()

[CustomAuthorization]
public string Get()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...