ASP.NET ChangePassword userId = null

ASP.NET ChangePassword userId = null

因此,我正在尝试使用默认 ASP.NET 方法更改用户密码,但就是行不通,不知何故我无法获取当前用户数据。我尝试了不同的方法来获取 userId,但仍然一无所获。除了 [AllowAnonymous],我没有更改任何东西,因为当我尝试调用该方法时出现错误提示权限被拒绝。

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

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

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

        return Ok();
    }

GetUserId() 是 IIdentity 的扩展方法,它在 Microsoft.AspNet.Identity.IdentityExtensions 中。确保已使用 Microsoft.AspNet.Identity;.

添加命名空间

否则你可以使用

string currentUserId = User.Identity.GetUserId();
ApplicationUser currentUser = db.Users.FirstOrDefault(x => x.Id == currentUserId);

如果您使用 EF,则用户应用程序用户代码

所以,我找到了答案...我忘了把这个放在请求中:

authorization: bearer my_token