问题描述: 在Asp.Net Core身份验证中,使用UserManager.Users.Any()方法始终返回false,即使数据库中存在用户。
解决方法:
确保数据库连接配置正确:检查appsettings.json或appsettings.Development.json文件中的数据库连接字符串配置,确保连接到正确的数据库。
确保用户表存在:检查数据库中是否存在AspNetUsers表,如果不存在,则可以使用Entity Framework Core的迁移功能创建该表。可以使用以下命令创建迁移:
dotnet ef migrations add InitialCreate
dotnet ef database update
services.AddIdentity()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
private readonly UserManager _userManager;
public YourController(UserManager userManager)
{
_userManager = userManager;
}
确保HttpContext已启用:在需要使用UserManager的地方,确保HttpContext已启用。可以在Configure方法中添加app.UseAuthentication()来启用身份验证中间件。
确保用户已通过身份验证:如果用户未通过身份验证,UserManager.Users.Any()方法可能会返回false。可以使用Authorize特性来限制访问只有经过身份验证的用户才能访问的控制器或操作。
希望以上解决方法能够帮助你解决问题。