c# 身份:如何在 UserStore 中查找和更新不同身份的声明?

c# identity: howto find and update different identity's claims in UserStore?

我可以使用以下代码存储用户的访问令牌以供以后在我现有的数据库中使用:

// This works - Will use access token for API calls later.
dbIdentity.AddClaim(new Claim("GoogleAccessToken", accessToken));

问题是 当访问令牌过期时 从 Google 中检索到一个新的访问令牌(我可以获取并读取它的值),但是我找不到更新用户原始声明中此值的方法,更不用说删除用户原始声明的声明了。

// This DOES NOT work. Identity error about ownership/authorization is generated.
dbIdentity.RemoveClaim(claimsIdentity.FindFirst("GoogleAccessToken"));

错误:无法删除声明“”。它要么不是此身份的一部分,要么是包含此身份的委托人拥有的声明。例如,在创建具有角色的 GenericPrincipal 时,委托人将拥有声明。角色将通过在构造函数中传递的身份公开,但实际上并不属于身份。 RolePrincipal 存在类似的逻辑。

我认为问题与令牌在 60 分钟后过期后登录有关。我相信情况是 "now logged-in identity with newly generated access token" 没有 link 到 "original identity with the old access token",所以它不允许我更新用户的原始声明。身份和校长不一样

是否有可能 link 以另一种(更简单的)方式提升身份或更新声明?我怎样才能做到这一点?请帮忙,谢谢。

看看这是否有效

更多下面有扩展码,看

改为使用变通方法。当所有其他方法都失败时,您可以手动查询和更新数据库!

BLAH 到 "unwanted" 解决方法...