asp.net-core - 如何在删除级联时删除身份用户?
问题描述
我正在使用ASP.NET CORE 3.1
和构建一个应用程序identity using built in funcations
。当我delete
或update
我想从aspnetuserroles and aspnetusers
.
我更新了用户,但似乎很冗长,并且由于邮递员错误,我无法使其正常工作。
错误
405 方法不允许
我可以解决这个错误,但我认为代码太冗长了。您有任何示例或更好的方法吗?
邮递员请求
{
"email":"user@gmail.com",
"password":"Passw0rd",
"username":"user4",
"roles":["user"],
"firstname":"user",
"lastname":"Lee",
"phonenumber":"12345"
}
邮递员网址
https://localhost:4200/api/accounts/05ce20c6-e2c4-4d40-b364-85c03206d562
更新用户
[Route("accounts/{id}")]
[HttpPut]
public async Task<IActionResult> UpdateUser(string id, [FromBody] RegistrationViewModel model)
{
if (!ModelState.IsValid) {
return BadRequest(ModelState);
}
var user = await _userManager.FindByIdAsync(id);
if (user == null)
{
return NotFound();
}
var userRoles = await _userManager.GetRolesAsync(user);
IdentityResult roleRemoveResult = await _userManager.RemoveFromRolesAsync(user, userRoles);
if (!roleRemoveResult.Succeeded)
{
ModelState.AddModelError("", "Failed to remove roles");
return BadRequest(ModelState);
}
IdentityResult roleAddResult = await _userManager.AddToRolesAsync(user, model.Roles);
if (!roleAddResult.Succeeded)
{
ModelState.AddModelError("", "Failed to add roles");
return BadRequest(ModelState);
}
//finished the role removing and assinging new roles
IdentityResult passwordResult = await _userManager.ChangePasswordAsync(user, user.PasswordHash, model.Password);
user.Email = model.Email;
user.FirstName = model.FirstName;
user.LastName = model.LastName;
user.PhoneNumber = model.PhoneNumber;
user.UserName = model.UserName;
IdentityResult updateUser = await _userManager.UpdateAsync(user);
if (!updateUser.Succeeded)
{
ModelState.AddModelError("", "Failed to update a user");
return BadRequest(ModelState);
}
var newUser = new User_Role_ViewModel();
newUser.Id = id;
newUser.Email = model.Email;
newUser.FirstName = model.FirstName;
newUser.LastName = model.LastName;
newUser.UserName = model.UserName;
newUser.Roles = model.Roles;
newUser.PhoneNumber = model.PhoneNumber;
return Ok(newUser);
}
解决方案
推荐阅读
- python - 找不到页面 404 django 3
- java - 使用 Solrj SchemaRequest 获取 Solr Schema 的 xml 表示
- python - Flask Webapp - 注册后验证电子邮件 - 最佳实践
- angular - 如何在 Ionic 5 上更改 angular/pwa 的图标?
- php - IF 语句 php 如果另一个为空则显示内容
- javascript - Yarn Install - 如何强制节点(10.xx)的最新次要版本和补丁
- javascript - 电子邮件的正文有 %20 而不是空格
- docker - 在运行 docker-compose up 时,它退出了错误代码 0
- java - R.java 文件中的“未解决的引用”错误
- c# - C# .net 核心通过属性重定向,无需在控制器操作中计算和运行代码