首页 > 解决方案 > 如何在删除级联时删除身份用户?

问题描述

我正在使用ASP.NET CORE 3.1和构建一个应用程序identity using built in funcations。当我deleteupdate我想从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); 

    }

标签: asp.net-coreasp.net-core-3.1asp.net-identity-3

解决方案


推荐阅读