如何从 AspnetRoleUsers 中删除包括角色和用户在内的用户
how to delete users including roles and users from AspnetRoleUsers
我正在使用 asp.net core 3.1
创建一个项目,但我找不到使用 Web.api
删除 Asp.net core 3.1
中包括角色的用户的正确来源
这是我试过但似乎不合适但还没有尝试过的代码。您对如何实现这一点有任何想法吗?
我想使用 Web Api 函数(例如状态代码)或发送到前端的任何错误消息来适当地检查错误。
[HttpPost, ActionName("Delete")]
public async Task<ActionResult> DeleteUser(string id)
{
var user = await _userManager.FindByIdAsync(id);
var rolesForUser = await _userManager.GetRolesAsync(user);
if (rolesForUser.Count() > 0)
{
foreach (var item in rolesForUser.ToList())
{
// item should be the name of the role
var result = await _userManager.RemoveFromRoleAsync(user, item);
}
}
await _userManager.DeleteAsync(user);
return OkResult(result);
}
你不需要循环删除角色,你可以使用RemoveFromRolesAsync
:
public virtual Task<IdentityResult> RemoveFromRolesAsync(TUser user, IEnumerable<string> roles);
并且每次操作都会return IdentityResult
可以用来查看操作状态:
if (User.Identity.IsAuthenticated)
{
try
{
var user = await _userManager.FindByIdAsync(id);
var roles= await _userManager.GetRolesAsync(user);
var result = await _userManager.RemoveFromRolesAsync(user, roles);
if (result.Succeeded)
{
var resultdelete = await _userManager.DeleteAsync(user);
if (result.Succeeded)
{
return Ok();
}
else
{
List<string> errors = new List<string>();
foreach (var error in result.Errors)
{
errors.Add(error.Description);
}
return BadRequest(errors);
}
}
else
{
List<string> errors = new List<string>();
foreach (var error in result.Errors)
{
errors.Add(error.Description);
}
return BadRequest(errors);
}
}
catch (Exception exception)
{
List<string> errors = new List<string>() { exception.Message };
return StatusCode(StatusCodes.Status500InternalServerError, errors);
}
}
但是使用带有事务的数据库存储过程总是一个不错的选择。
我正在使用 asp.net core 3.1
创建一个项目,但我找不到使用 Web.api
Asp.net core 3.1
中包括角色的用户的正确来源
这是我试过但似乎不合适但还没有尝试过的代码。您对如何实现这一点有任何想法吗? 我想使用 Web Api 函数(例如状态代码)或发送到前端的任何错误消息来适当地检查错误。
[HttpPost, ActionName("Delete")]
public async Task<ActionResult> DeleteUser(string id)
{
var user = await _userManager.FindByIdAsync(id);
var rolesForUser = await _userManager.GetRolesAsync(user);
if (rolesForUser.Count() > 0)
{
foreach (var item in rolesForUser.ToList())
{
// item should be the name of the role
var result = await _userManager.RemoveFromRoleAsync(user, item);
}
}
await _userManager.DeleteAsync(user);
return OkResult(result);
}
你不需要循环删除角色,你可以使用RemoveFromRolesAsync
:
public virtual Task<IdentityResult> RemoveFromRolesAsync(TUser user, IEnumerable<string> roles);
并且每次操作都会return IdentityResult
可以用来查看操作状态:
if (User.Identity.IsAuthenticated)
{
try
{
var user = await _userManager.FindByIdAsync(id);
var roles= await _userManager.GetRolesAsync(user);
var result = await _userManager.RemoveFromRolesAsync(user, roles);
if (result.Succeeded)
{
var resultdelete = await _userManager.DeleteAsync(user);
if (result.Succeeded)
{
return Ok();
}
else
{
List<string> errors = new List<string>();
foreach (var error in result.Errors)
{
errors.Add(error.Description);
}
return BadRequest(errors);
}
}
else
{
List<string> errors = new List<string>();
foreach (var error in result.Errors)
{
errors.Add(error.Description);
}
return BadRequest(errors);
}
}
catch (Exception exception)
{
List<string> errors = new List<string>() { exception.Message };
return StatusCode(StatusCodes.Status500InternalServerError, errors);
}
}
但是使用带有事务的数据库存储过程总是一个不错的选择。