我需要这样的东西:
if (Request.IsAuthenticated)
{
var user = await AccountManager.UserManager.FindByIdAsync(User.Identity.GetUserId());
if (user != null)
{
if (regular account)
{
// do this
}
if (external provider account)
{
// do that
}
}
}
我在调试器中找到了它,但我不知道这是否是用于检查的正确方法?
user.Logins.FirstOrDefault().LoginProvider
哪个返回“ Google”
对于那些在ASP.NET Core 3.1中具有外观的用户,可以询问用户管理器用户是否具有密码:
var user = await UserManager.GetUserAsync(User).ConfigureAwait(false);
var hasPassword = await UserManager.HasPasswordAsync(user).ConfigureAwait(false);
因此,所有用户都可以使用密码和外部登录名,以便清楚。新用户从google / facebook返回后,系统会提示他们创建本地用户(与登录名相关联)。如果要测试用户仅具有密码而没有其他登录名的情况,则可以仅查看用户是否具有任何关联的登录名。
UserManager.GetUserLogins().Count == 0
请记住,用户可以取消其帐户的链接,也可以通过管理页面链接帐户,因此他们不一定会随着时间的推移而停留在同一存储桶中...