【发布时间】:2017-01-17 09:55:17
【问题描述】:
在使用 Identity Server 4 在 Asp.Net Core Web 应用程序中注册新的 User 时,我正在调试确认电子邮件流。
由于我已经注册了我的实际电子邮件,为了重复使用它,我使用SQL Update 将AspNetUsers 表中的UserName 和Email 修改为某个随机值。
现在,当我再次使用原始电子邮件注册时。我收到了duplicate user error
result = await _userManager.CreateAsync(user, model.Password);
我已经:
已清除浏览器缓存。
关闭本地 IIS Express
重新启动 Visual Studio。
-
在将
UserName和Email更新回原始值后使用_userManager.DeleteAsync(),但这会给出带有描述Optimistic concurrency failure, object has been modified的Microsoft.AspNetCore.Identity.IdentityError。在
Sql Server上运行此查询select * from INFORMATION_SCHEMA.COLUMNS where COLUMN_NAME in ( 'UserName' , 'Email')
我得到以下信息:
我知道这不是搞乱后端的好习惯,但这是开发环境,我可以使用另一封电子邮件继续我的工作。
我希望读者帮助了解如何安全地烧毁 User 以便能够重复使用电子邮件。
珍惜你的时间
【问题讨论】:
-
通常您永远不想删除用户,因为您可能有其他带有外键引用的数据。此外,删除用户以便释放电子邮件地址以供再次使用,这不是一个常见的问题,因为电子邮件地址永远不会重新发布给新用户。我强烈建议不要删除用户,而是将帐户标记为非活动状态。如果用户再次返回该帐户,则您可以通过向他们发送电子邮件来重新激活它,他们必须单击链接等以证明他们拥有该帐户的位置才能重新访问您的系统。
标签: asp.net-core asp.net-identity sql-server-2016 identityserver4