Почему удаление не поддерживается в ASP.Net Identity
Я возился с новыми функциями auth, которые недавно RTM'd с Visual Studio 2013.
При реализации пользовательского UserStore я просматривал декомпилированные источники для UserStore, которые отправляются в поле Microsoft.AspNet.Identity.EntityFramework.UserStore<TUser>
. Я заметил, что метод для удаления пользователя не поддерживался:
public class UserStore<TUser> : IUserLoginStore<TUser>, IUserClaimStore<TUser>, IUserRoleStore<TUser>, IUserPasswordStore<TUser>, IUserSecurityStampStore<TUser>, IUserStore<TUser>, IDisposable where TUser : IdentityUser
{
// other stuff omitted
public virtual Task DeleteAsync(TUser user)
{
throw new NotSupportedException();
}
}
Это странно, не так ли? Почему удаление пользователя не поддерживается?
Я признаю, что не могу вспомнить производственную систему, в которой я написал эти жесткие удаленные записи пользователей, но я не понимаю, почему эта функциональность не поддерживается.
Есть ли техническая причина или просто потому, что Microsoft считает, что удаление записей пользователей является "плохим" и оставляет его как упражнение для переопределения метода разработчиком?
Update
В попытке понять, что думала команда ASP.NET, я искал рамки использования DeleteAsync(TUser user)
. Ничто в структуре, кажется, не вызывает этого. Таким образом, кажется, что они могли полностью вывести элемент из интерфейса IUserStore<TUser>
.
Мое заключение на этом этапе заключается в том, что он там реализуется, если вы хотите и как вы хотите, и что он будет когда-либо вызываться вашим кодом приложения или будущими библиотеками управления пользователями.
Ответы
Ответ 1
У нас просто закончилось время, чтобы завершить его на 1.0, оно будет добавлено в Обновление 1 как часть остальной части админы, связанной с админом, как свойство IQueryable Users в UserManager. (Он уже реализован в ночных пакетах 1.1-alpha1)
Ответ 2
Удалить учетную запись пользователя
В 1.0, если вам нужно было удалить пользователя, вы не могли бы это сделать через UserManager. Теперь они исправили его с помощью 2.0:
var result = await UserManager.DeleteAsync(user);
См. http://blogs.msdn.com/b/webdev/archive/2014/03/20/test-announcing-rtm-of-asp-net-identity-2-0-0.aspx