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
因此,我正在尝试使用默认 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