用户通过身份验证时调用 Web Api 方法
Calling a Web Api method when user is authenticated
我在对用户进行身份验证时调用 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();
}
谢谢
海梅
出现问题是因为我没有随请求发送不记名令牌。
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'
})
现在可以了。
此致
海梅
我在对用户进行身份验证时调用 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();
}
谢谢 海梅
出现问题是因为我没有随请求发送不记名令牌。
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'
})
现在可以了。
此致
海梅