如何处理用户从网站上删除他们的帐户?

How to handle the users deletion of their account from a website?

作为开发者,应该如何处理用户从网站上删除他们的帐户?

如果有人猜到了用户密码并删除了他们的帐户,您可能希望能够恢复该帐户,因此立即彻底删除它是行不通的。

另一方面,如果您确定要删除一个帐户,它仍会在备份中保留一段时间。

是否有处理帐户删除的最佳做法?

我会在用户帐户记录中再添加一个布尔字段,例如“IsDeleted”。这将指示用户帐户已被删除。此外,添加已删除的 DateTime 可能有助于稍后确定您是否应该完全清除该用户帐户记录。 最好的做法是保持简单。

这通常是通过所谓的“软删除”来处理的,它会将记录标记为已删除但实际上并不删除它。 这是许多框架中的常见场景。比如Laravel uses a deleted_at timestamp property,这样就可以删除一个账号,然后运行一个定时任务真的删除一个被删除超过一定时间的记录之前,比如说一个星期。 “取消删除”帐户只需将该字段设置为 null.

软删除对于不可避免的“但我并不是要删除它”的情况非常有用,而且当您在删除用户帐户时可能有其他需要完成的任务时也很有用,例如从中删除数据您与之共享数据的第 3 方服务,例如邮件列表服务。

虽然法律要求您根据 GDPR 要求在收到请求时删除数据,但这不是绝对的,取决于您的处理依据。例如,您可能在法律上有义务将记录保留一段时间,或者您可能有合同要求在帐户支付所有账单之前保留记录。

您不应该依赖软删除来防御密码猜测——强大的密码策略和 2FA 应该具有更高的优先级。