【问题标题】:Recreating a deleted user in ASP.Net Membership在 ASP.Net Membership 中重新创建已删除的用户
【发布时间】:2015-06-23 08:21:20
【问题描述】:

我正在使用 ASP.Net Membership 提供程序来处理我网站上的用户帐户,并且我已将 DeleteUser() 函数设置为仅从 aspnet_Membership 表中删除数据,因为我想保留用户 ID 和详细信息在 aspnet_Users 中进行审计。

我遇到了一个问题,如果我删除用户“bob”,当有人使用相同的用户名创建新用户时,而不是使用新的 UserId(默认情况下是 GUID)创建新的 aspnet_Users 记录而是将新的 aspnet_Membership 表记录链接到之前创建的“bob”帐户。

这意味着不是创建一个恰好具有相同用户名的新用户,而是重新激活旧用户并将他们的活动历史链接在一起。

有没有办法强制 ASP.Net 成员创建新的 aspnet_users 记录而不是劫持旧记录?

谢谢!

【问题讨论】:

  • 如果我是你,我会很想创建一个 guid 并在每个已删除用户的名称后放置相同的 guid(当用户被删除时),这样名称将是唯一的,您可以轻松通过查看他们的名字中是否有魔法 guid 来识别已删除的用户....然后再次删除 bob 一次,然后创建另一个新的 bob,然后将它们删除..您每次都需要一个新的 guid,除非您也可以在名称中添加时间戳之类的内容 - 只是为了使其独一无二......删除时会更改为“Bob++GUIDHERE”等内容
  • 我实际上只是试了一下,奇怪的是,即使我在创建新帐户之前更改了旧用户帐户的用户名......它仍然会将新帐户的会员记录链接到旧帐户的 aspnet_users 记录。我怀疑它正在使用 UserId GUID,这很烦人。

标签: c# asp.net .net vb.net


【解决方案1】:

不幸的是,ASP.Net Membership SQL Provider 使用用户名作为种子生成用户 ID GUID。这意味着,如果不删除用户(如果您保留审核历史记录,您不会想要这样做),就没有干净的方法来创建具有相同用户 ID 的另一个用户。

为了解决我的问题,我执行了以下操作:

  • 允许 ASP.Net Membership 将成员记录分配给 asp_user 记录,就像默认情况下所做的那样
  • 在我的审计表中添加了一条审计记录,明确指定用户已被重新创建

这将允许我在编写审计查询时检查执行操作的用户是否曾经被删除,因此他们是否可能是同一个人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 2023-03-12
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    相关资源
    最近更新 更多