asp.net-mvc – ASP.NET MVC 5如何在Identity 2.0中删除用户及其相关数据
|
嗨,我正在关注本文删除Identity 2.0中的用户
但是,我需要先删除AspNetUserRoles中的所有相关记录,然后删除该用户. 我发现一个写在Identity 1.0中的例子,这个例子中使用的一些方法不存在. // POST: /Users/Delete/5
[HttpPost,ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> DeleteConfirmed(string id)
{
if (ModelState.IsValid)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var user = await context.Users.FindAsync(id);
var logins = user.Logins;
foreach (var login in logins)
{
context.UserLogins.Remove(login);
}
var rolesForUser = await IdentityManager.Roles.GetRolesForUserAsync(id,CancellationToken.None);
if (rolesForUser.Count() > 0)
{
foreach (var item in rolesForUser)
{
var result = await IdentityManager.Roles.RemoveUserFromRoleAsync(user.Id,item.Id,CancellationToken.None);
}
}
context.Users.Remove(user);
await context.SaveChangesAsync();
return RedirectToAction("Index");
}
else
{
return View();
}
}
我从任何地方找不到“IdentityManager”,context.Users也没有FindAsync()方法. 请帮忙弄清楚如何在Identity 2.0中正确删除用户及其相关记录 谢谢. 解决方法我认为你正在寻找的课程是 UserManager和 RoleManager.在我看来,他们是更好的方式,而不是直接反对上下文.UserManager定义了一个方法RemoveFromRoleAsync,它允许您从给定角色中删除用户(由他的密钥识别).它还定义了几种查找方法,例如FindAsync,FindByIdAsync,FindByNameAsync或FindByEmailAsync.它们都可以用于检索用户.要删除用户,您应该使用接受用户对象作为参数的DeleteAsync方法.要获取用户是Identity的成员角色,您可以通过GetRolesAsync方法传递用户的ID.此外,我看到您正在尝试从用户中删除登录.为此,您应该使用RemoveLoginAsync方法. 所有代码中的所有代码将类似于以下代码: // POST: /Users/Delete/5
[HttpPost,ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> DeleteConfirmed(string id)
{
if (ModelState.IsValid)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var user = await _userManager.FindByIdAsync(id);
var logins = user.Logins;
var rolesForUser = await _userManager.GetRolesAsync(id);
using (var transaction = context.Database.BeginTransaction())
{
foreach (var login in logins.ToList())
{
await _userManager.RemoveLoginAsync(login.UserId,new UserLoginInfo(login.LoginProvider,login.ProviderKey));
}
if (rolesForUser.Count() > 0)
{
foreach (var item in rolesForUser.ToList())
{
// item should be the name of the role
var result = await _userManager.RemoveFromRoleAsync(user.Id,item);
}
}
await _userManager.DeleteAsync(user);
transaction.commit();
}
return RedirectToAction("Index");
}
else
{
return View();
}
}
您需要根据需要调整此片段,因为我不知道IdentityUser实现如何.请记住根据需要声明UserManager.在Visual Studio中使用个人帐户创建新项目时,可以找到一个可以做到这一点的示例. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 将数值强制为HTML表导出为excel的文本
- asp.net – 如何使用JQuery与母版页?
- asp.net – DOM异常:INVALID_CHARACTER_ERR(5)[已关闭]
- asp.net-core – CoreCLR中的哈希算法
- asp.net-mvc – 如何运行Internet Explorer Selenium测试作
- asp.net – 无法加载程序集“App_Web_kh7-x3ka”.确保在访问
- asp.net-mvc-3 – 解析器错误:服务器错误在’/’应用程序
- asp.net – MVC 6 – RC1到RC2的更改
- NHibernate中对同一个对象的Lazyload要设置一致
- asp.net – 如何在asp标签中将文本与中心对齐
- asp.net – 可以通过移动设备的Web浏览器上传图片
- iis-7.5 – ASP.NET Web API仅在某些服务器上返回
- asp.net – 在JavaScript中访问asp:hiddenfield
- asp.net-mvc – UpdateModel前缀 – ASP.NET MVC
- 从ASP.NET MVC返回null时,jQuery post JSON失败
- asp.net – MVC-Mini-Profiler – Web窗体 – 找
- asp.net – 如何全局创建CustomPrincipal(使用和
- 尝试使用asp.net流式传输PDF文件会产生“损坏的文
- asp.net-mvc-4 – ASP.Net Web Api在POST上不绑定
- 自定义ASP.Net DataPager生成的HTML
