- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
使用 asp.net mvc5,我的用户管理系统似乎可以正常工作。我可以使用 google 或名称/密码登录。
但现在我正在开发一个用户管理界面,我需要能够在其中删除现有用户。这开始让我明白用户管理系统是多么的困惑。与用户打交道的方式有很多种……但其中一些方式行不通。
我读到的大多数地方都在谈论使用 Membership.DeleteUser()。
但这行不通...
用户是用创建的。
var user = new ApplicationUser()
{
UserName = model.UserName,
Email = model.Email,
ConfirmationToken = confirmationToken,
IsConfirmed = false
};
var result = await UserManager.CreateAsync(user, model.Password);
现在稍后.. 我该如何删除这样的用户? (给出其名称或用户 ID)
我已经尝试了各种搜索中出现最多的方法.. 提出了成员资格作为解决方案。但这肯定不适合 MVC5 吗?例如
var allusers = Membership.GetAllUsers(); // allusers is empty
bool success = Membership.DeleteUser(model.name); // <-- success = false
我可以使用这种方法获取所有用户..
ApplicationDbContext db = new ApplicationDbContext();
foreach (var user in db.Users) { ... }
而且我可以通过...找到个人用户
ApplicationDbContext db = new ApplicationDbContext();
var um = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(db));
ApplicationUser user = um.FindById(model.userId);
现在我该如何删除呢? ....
最佳答案
更新
从 Microsoft.AspNet.Identity 版本 2.0.0.0 开始,您现在可以使用 UserManager.Delete(user);
删除具有身份的用户。
为了子孙后代
您指的是两个不同的事物,身份和成员资格。较新版本的 ASP.NET 支持身份和成员身份,身份是默认设置,而旧版本仅支持成员身份(在这两个身份验证系统之外)。
当您使用 UserManager.CreateAsync
创建用户时,您是在 Microsoft.AspNet.Identity
命名空间内执行此操作。当您尝试使用 Membership.DeleteUser
删除用户时,您是在 System.Web.Security
命名空间内执行此操作。他们生活在两个不同的世界。
正如另一条评论所述,deleting users is not yet supported out of the box by Identity , 但它 is the first item on their roadmap for a Spring of 2014 release .
但为什么要等?像这样向 ApplicationUser 模型添加另一个属性:
public class ApplicationUser : IdentityUser
{
public string IsActive { get; set; }
}
然后,在您的 Controller 中删除用户:
user.IsActive = false;
在用户登录时进行检查:
if (user.IsActive == false)
{
ModelState.AddModelError(String.Empty, "That user has been deleted.");
return View(model);
}
当已删除的用户尝试重新注册时,不要使用 UserManager.Create
,而是使用 UserManager.Update
以及注册页面上的新信息。
这些步骤将有效删除用户。如果您真的必须从数据库中清除他们的信息,you can use Entity Framework to do that more directly .
关于c# - 如何删除使用 UserManager.CreateAsync 创建的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21506753/
我有以下使用 CreateAsync 方法创建新用户的简单代码。该代码不会抛出任何错误,但也不会更新数据库。我在 IdentityResult result 行上添加了一个断点,在该行停止,在 if
我正在尝试使用新的 Asp.Net Identity 系统。我在 asp.net 网站上搜索过这个并且能够找到一个教程 here . 我已经为它创建了 Register 操作和适当的 View 。但是
文档说它将“创建一个新的处理程序,其发布的消息和可运行对象不受显示垂直同步等同步障碍的影响。” 这是什么意思?什么时候应该使用 createAsync()? 最佳答案 我的理解是,这是一个不等待显示
尝试使用 UserManager CreateAsync 方法创建新用户时出现以下错误。我使用的是未修改的 IdentityUser 和 IdentityRole。我有一些 DBSets,它们填充了数
我有这个 ReactiveCommand; LoadFileCommand = ReactiveCommand.CreateAsyncTask((_, cancellationToken) => Lo
我刚刚将我的 MVC 5 应用程序(以前是带有 SimpleMembership 的 MVC 3)升级到 ASP.NET Identity 2.0,我可以使用现有用户,但是当我执行以下命令创建新用户时
情况 我有一个我更新的工作程序需要更新身份/登录方法。所以我从 Identity 1 更新到 version2 并且我一直在修复错误,但我现在很困惑。 这是我的注册码 public async Tas
使用 asp.net mvc5,我的用户管理系统似乎可以正常工作。我可以使用 google 或名称/密码登录。 但现在我正在开发一个用户管理界面,我需要能够在其中删除现有用户。这开始让我明白用户管理系
我有这个 Seeder 类,它在 Configure 方法的 Startup.cs 文件的末尾被调用: public class UserSeeder { private readonly A
我已经用额外的地址列修改了 AspNetUsers 表,并遵循了这些步骤 here除了迁移部分。我使用数据库优先方法开始我的项目 我的身份模型有额外的字段 public class Applicati
几天前,我发现了 Ben Foster 撰写的关于 MVC、Identity 和 OWIN 的非常好的教程。教程是here 我刚刚完成本教程,但在尝试覆盖函数“CreateAsync”时发现了一个问题
我正在尝试使用以下函数以编程方式将用户添加到我的 ASP.Net MVC 5.0 应用程序中的 AspNetUsers 表: private async Task AddUser(DataImport
我正在尝试对 IUserStore 进行非常简单的实现这本质上是: 使用 NHibernate 将用户保存在一个表中(无声明/登录) 将角色名称存储在同一个表中的 nvarchar 列中(管道 ( '
我现在真的很困惑。因此,我一直在开发 Web API 并对项目进行单元测试,并且最近对许多 Controller 进行了更改,但完全保持 AccountController 不变。在我的 Accoun
UserManager.CreateAsync Method (TUser, String)没有提到错误。 在 Controller 中,我只是编辑如下内容: public async Task Re
在 Auth0 的在线管理 API 中,我可以使用此主体创建用户。但不知何故,CreateAsync 无法正常工作。 private async Task CreateUserAuth0()
我有以下注册方法,我发誓我(手动)测试了一段时间并注意到如果用户名已经存在,结果只是 result.Succeeded 的错误值并将错误消息附加到ModelState(使用内置的 AddErrors(
致力于 .Net Core 项目并创建了以下服务以跨页面共享通用方法。 namespace MyApp.Tests.Services { public class UserServiceTes
我们正在尝试在 ASP.Net 5 项目中使用 Microsoft 帐户身份验证。我们不需要本地身份验证,也不需要用户名。 在 Web 应用程序的 ASP.Net 5 模板中,使用外部提供商登录后,控
我正在尝试测试我的帐户 Controller 的故障情况。当我在 Debug模式下运行测试时,我没有看到预期的结果。我期望在到达创建用户异步的代码行时返回失败的身份结果。但是,在 Debug模式下,它
我是一名优秀的程序员,十分优秀!