c# - 用户通过身份验证时调用 Web Api 方法
问题描述
当用户通过身份验证时,我在调用 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'
})
现在它起作用了。
问候
海梅
推荐阅读
- swiftui - 在 SwiftUI 中放置在导航堆栈中时滚动视图的背景颜色
- python - GDB:ModuleNotFoundError:没有名为“_tkinter”的模块
- git - 如何从一个 Git 存储库迁移到另一个 Git 存储库?
- javascript - 单击按钮更改计时器时间
- angular - 使用 Material Angular 中的网格调整 rowHeight 属性
- python - 这是否模拟一维随机游走?
- python - 检测数据极性从正极变为负极的最佳方法?
- c# - C# 读取 HEX 串口数据并发送到 Streamwriter
- reactjs - 如何访问 Site-core Jss 中的数组值?
- r - 直方图未显示 R 中的所有 x 轴标签