Вызов метода Web Api при аутентификации пользователя - PullRequest
0 голосов
/ 03 декабря 2018

У меня проблема с вызовом метода Web Api при аутентификации пользователя.

Дело в том, что когда я вызываю метод Web Api при аутентификации пользователя, он не регистрируется.

Раньше у меня была проблема с методом выхода из системы в AccountController.Я решил это с помощью атрибута AllowAnonymous.

Однако теперь я столкнулся с той же проблемой с методом ChangePassword.Я не могу добавить атрибут AllowAnonymous в этом случае, потому что, когда я делаю это, я не могу получить идентификатор зарегистрированного пользователя.

Если я не добавлю атрибут AllowAnonymous, система выдаст запрещенную ошибку.

Iя застрял здесь .... как я могу решить это?

Например, это метод ChangePassword в AccountController:

    // POST api/Account/ChangePassword
    [Route("ChangePassword")]
    public async Task<IHttpActionResult> ChangePassword(ChangePasswordBindingModel model)
    {
        if (!ModelState.IsValid)
        {
            // return BadRequest(ModelState);
            return Json(GetModelErrorMessages());
        }

        try
        {
            IdentityResult result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword,
                model.NewPassword);

            if (!result.Succeeded)
            {
                return GetErrorResult(result);
            }
        }
        catch(Exception ex)
        {

        }

        return Ok();
    }

Спасибо Jaime

1 Ответ

0 голосов
/ 07 декабря 2018

Проблема возникла из-за того, что я не отправлял токен на предъявителя с запросом.

            var tokenKey = 'accessToken';
            var token = sessionStorage.getItem(tokenKey);
            var headers = {};
            if (token) {
                headers.Authorization = 'Bearer ' + token;
            }

            $.ajax({
                type: 'POST',
                url: "/api/Account/ChangePassword",
                data: JSON.stringify(data),
                headers: headers,
                contentType: 'application/json; charset=utf-8'
            })

Теперь это работает.

С уважением

Хайме

...