【问题标题】:Calling a Web Api method when user is authenticated用户通过身份验证时调用 Web Api 方法
【发布时间】:2019-05-05 05:02:58
【问题描述】:

当用户通过身份验证时,我在调用 Web Api 方法时遇到问题。

事实是,当我在用户通过身份验证时调用 Web Api 方法时,它不会被重新识别。

以前,我在 AccountController 中的 Logout 方法有问题。我通过使用 AllowAnonymous 属性解决了它。

但是,现在我在使用 ChangePassword 方法时遇到了同样的问题。在这种情况下,我无法添加 AllowAnonymous 属性,因为当我这样做时,我无法检索登录的用户 ID。

如果我不添加 AllowAnonymous 属性,系统会抛出一个禁止的错误。

我被困在这里....我该如何解决?

例如,这是 AccountController 中的 ChangePassword 方法:

    // 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();
    }

谢谢 詹姆

【问题讨论】:

  • 你使用dotnet core吗?可以分享一下注册吗?也许结帐Question 34306891Filters in ASP.NET Core
  • 您的意思是我更新问题以向您显示 Visual Studio 添加的用于注册用户的控制器操作?

标签: c# authentication asp.net-web-api asp.net-web-api2


【解决方案1】:

问题是由于我没有随请求发送不记名令牌。

            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'
            })

现在可以了。

问候

詹姆

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 2015-11-03
    • 2017-03-03
    • 2019-06-21
    • 1970-01-01
    • 2016-04-16
    相关资源
    最近更新 更多