Удаление пользователя ASP.NET Identity

89
03 сентября 2019, 14:10

Пытаюсь удалить пользователя:

public async Task<ActionResult> Delete(string id)
        {
            ApplicationUser user = await userManager.FindByIdAsync(id);
            if (user != null)
            {
                IdentityResult result = await userManager.DeleteAsync(user);
                if (result.Succeeded)
                {
                    return RedirectToAction("Index");
                }
                else
                {
                    TempData["Error"] = "Error!";
                    return RedirectToAction("Index");
                }
            }
            TempData["Error"] = "Error!";
            return RedirectToAction("Index");
        }

Пользователь не удаляется. Происходит ошибка:

System.Data.Entity.Infrastructure.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.Data.Entity.Core.UpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.Data.SqlClient.SqlException: The DELETE statement conflicted with the REFERENCE constraint "FK_dbo.ClientProfiles_dbo.AspNetUsers_Id". The conflict occurred in database "Schedule", table "dbo.ClientProfiles", column 'Id'. The statement has been terminated.

Пытался удалять сначала роль, а потом самого пользователя, но ошибка все равно происходит. Как ее исправить?

Answer 1

Как написали в комментариях:

удаление пользователей системы - неверная практика

Так что вместо удаления, я делаю пользователей неактивными.

В UserManager надо прописать:

UserManager.UserLockoutEnabledByDefault = true; //разрешает блокировку пользователей
UserManager.DefaultAccountLockoutTimeSpan = DateTime.Now.AddYears(100).TimeOfDay; //время блокировки

Далее, когда я хочу заблокировать пользователя:

public async Task<ActionResult> LockOut(string id)
    {
        ApplicationUser user = await userManager.FindByIdAsync(id);
        if (user != null)
        {
            user.LockoutEnabled = true;
            await userManager.UpdateAsync(user);
        }
        return RedirectToAction("Index");
    }
READ ALSO
Получение свойства элемента по клику

Получение свойства элемента по клику

Есть Grid, на нем расположены в виде DataGrid информация для пользователя только стилизовано, использовать стандартный datagrid не захотелВнутри ячеек...

97
Перехват исключений в фильтре

Перехват исключений в фильтре

Приложение ASPNET MVC Методы контроллера разные:

93
Передача модели из ajax запроса в экшен

Передача модели из ajax запроса в экшен

Есть проблема с передачей данных из ajax запроса в экшен контроллера

89
Список Анимаций Unity

Список Анимаций Unity

Доброго времени суток!

95