我正在尝试使用Asp.Net Identity 2验证Asp.Net Core 2 Web API。这是我的AuthController和databasecontext的代码:
public AuthController(UserManager<ApiUser> userManager, SignInManager<ApiUser> signInManager, RoleManager<ApiRole> roleManager
, IPasswordHasher<ApiUser> passwordHasher, IConfiguration configurationRoot, ILogger<AuthController> logger)
{
_userManager = userManager;
_signInManager = signInManager;
_roleManager = roleManager;
_logger = logger;
_passwordHasher = passwordHasher;
_configurationRoot = configurationRoot;
}
public class SecurityContext : IdentityDbContext<ApiUser, ApiRole, int>
{
public SecurityContext(DbContextOptions<SecurityContext> options)
: base(options)
{
}
}
在运行时,当我检查SecurityContext中的选项时,我可以看到connectionstring属性设置。但是当我调试_userManager时,没有设置数据库连接。
我也从Startup.cs配置了数据库连接:
services.AddDbContext<SecurityContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("SystemDbContext")));
services.AddIdentity<ApiUser, ApiRole>()
.AddEntityFrameworkStores<SecurityContext>()
.AddDefaultTokenProviders();
数据库连接在appsettings.json中设置:
{
"ConnectionStrings": {
"SystemDbContext": "Server=xxx;Database=xxxx;user id=sa;password=xxx;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}
我在执行登录端点时遇到的错误是 - “用户登录失败”域用户帐户“,而我已将SQL连接设置为与'sa'连接。似乎它不是属性设置数据上下文的连接字符串。
更新: 在进一步调查中,我看到虽然DbContextOptions的SQLConnectionString正确,但连接为空。
有人能指出这里缺少什么吗?提前谢谢。
答案 0 :(得分:0)
您的ConnectionString不对,您需要删除Trusted_Connection=True
部分。
将appsettings连接字符串设置为以下内容,它将起作用
{
"ConnectionStrings": {
"SystemDbContext": "Server=xxx;Database=xxxx;user id=sa;password=xxx;MultipleActiveResultSets=true"
}
}