我需要这样的东西:
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”
答案 0 :(得分:0)
因此,所有用户都可以拥有密码和外部登录。新用户从google / facebook返回后,系统会提示他们创建本地用户(与登录相关联)。如果您想测试用户只有密码而没有其他登录的情况,您可以查看用户是否有任何关联登录。
UserManager.GetUserLogins().Count == 0
请注意,用户可以取消其帐户的关联,还可以通过管理页面关联帐户,这样他们就不会随着时间的推移而停留在同一个存储桶中...
答案 1 :(得分:0)
对于那些期待的人,可以在ASP.NET Core 3.1中询问用户管理器用户是否具有密码:
var user = await UserManager.GetUserAsync(User).ConfigureAwait(false);
var hasPassword = await UserManager.HasPasswordAsync(user).ConfigureAwait(false);