【发布时间】:2018-01-09 04:31:06
【问题描述】:
我正在尝试使用 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 正确,但连接为空。
有人能指出这里缺少什么吗?提前致谢。
【问题讨论】:
标签: authentication asp.net-identity asp.net-core-2.0