具有自定义 UserManager 的 ClaimsPrincipal 在剃刀页面中不起作用

ClaimsPrincipal with custom UserManager doesn't work in razor pages

我有一个 asp.net 项目,其中包含控制器和剃刀页面。 Asp.net Identity 使用 razor 页面创建自己的区域,默认情况下使用脚手架。

登录后问题开始,在控制器中,我可以使用 User 关键字查看当前用户的声明,如 ID、用户名、电子邮件等。没有问题。当我在身份页面中调用 User 关键字时,它里面有 0 个声明和 await userManager.GetUserAsync(User) returns null

我正在使用内置的登录管理器。

我是不是漏掉了什么?

更新: 使用 ClaimsPrincipal 的配置文件页面,当我单击设置身份验证器应用程序 link 时,它带有 0 个声明,如下图所示。

它以前是有效的,一旦我将 Authenticator 应用程序添加到我的帐户并将其删除,然后就出现了这个问题。

当启用 2 因素身份验证以及当您使用 2fa 登录并选中记住此浏览器并从您的帐户中删除 2fa 时,就会发生这种情况。 清除 2FA cookie 可解决问题

https://github.com/dotnet/aspnetcore/issues/5817#issuecomment-491818987