ASP.NET 身份库 - 删除用户并不会删除其声明

问题描述 投票:0回答:1

我在 Blazor 服务器端版本 8 中使用 ASP.NET Core Identity 库。

该库提供了一个页面供用户从系统中删除自己。当它们被删除时 - 它不会删除它们拥有的任何声明。

如何让它删除任何关联的声明?

asp.net-core asp.net-identity blazor-server-side
1个回答
0
投票

ASP.NET 身份库 - 删除用户并不会删除其声明

图书馆提供了一个页面,供用户从图书馆中删除自己 系统。当它们被删除时 - 它不会删除它们的任何声明 有。

如果您可以分享您如何尝试删除用户的现有代码,那就更好了。

因为,在 ASP.NET Core Identity 中,当您删除用户时,默认情况下不会自动删除关联的声明。如果您想与用户一起删除声明,您可以通过扩展 UserManager 类来覆盖默认行为。

如何让它删除任何关联的声明?

为了首先删除用户声明,我们需要注入

UserManager
服务,其中我们有 RemoveClaim,它实际上删除了声明。

然后,我们必须检索用户的声明,使用循环单独删除它们,最后删除用户 - 这可以确保当用户在 ASP.NET Core Identity 应用程序中删除时,所有关联的声明都被删除。

请记住正确配置

UserManager
,并考虑大量索赔的性能和数据完整性。

让我们看看如何在实践中实现:

@inject UserManager<ApplicationUser> _userManager

var userId = 123;
var claims = await _userManager.GetClaimsAsync(userId);
foreach (var claim in claims)
{
    await _userManager.RemoveClaimAsync(userId, claim);
}

await _userManager.DeleteAsync(userId);

注意: 如前所述,必须在删除用户之前执行声明删除,并且如果您有自定义用户类,请确保将

IdentityUser
类替换为您的实际用户类型。另外,也请参考这个官方文档

© www.soinside.com 2019 - 2024. All rights reserved.