我在使用ASPNET Core API进行身份验证。一切正常,除了事实是,每当我尝试通过GeneratePasswordResetToken更改密码时,都会抱怨没有IUserTokenprovider 。我们收到类似“未注册名为'Default'的IUserTokenProvider的错误。
我们为不同的客户使用不同的数据库,因此我们想提供一个到上下文的连接字符串,以便每个调用都能够引用不同的数据库。据我了解,这在启动时是不可能的。然后,我们尝试在DbContext和有效的UserManager中执行此操作。
现在,我们的代码如下所示(仅相关部分):
启动
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddIdentity<ApplicationUser, IdentityRole>(options =>
{
options.Tokens.ProviderMap.Add("Default", new TokenProviderDescriptor(typeof(IUserTwoFactorTokenProvider<ApplicationUser>)));
})
.AddDefaultTokenProviders();
}
Run Code Online (Sandbox Code Playgroud)
DbContext
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
private static string _connectionString
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options, string connectionString) : base (options)
{
_connectionString = connectionString;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(_connectionString);
base.OnConfiguring(optionsBuilder);
}
}
Run Code Online (Sandbox Code Playgroud)
用户管理器
public class ApplicationUserManager : UserManager<ApplicationUser>
{
public ApplicationUserManager(string connectionString, ApplicationDbContext context) : base(new UserStore<ApplicationUser>(context), null, new PasswordHasher<ApplicationUser>(), null, null, null, new …Run Code Online (Sandbox Code Playgroud) 题
作为 Dapper 查询的结果,我们有一个 Dapper Row,我想将其作为 json 字符串存储在我们的数据库中。不幸的是,我似乎无法让它发挥作用。因此,让我们从一些背景信息开始。
背景资料
我们正在做一个项目,我们从一个表中提取表名,以了解我们必须处理哪些表。我们还希望它尽可能灵活,因此我们决定不对我们的数据使用特定的 POCO。
我们使用的是 SQL Server 2014,所以很遗憾我们还没有“FOR JSON”选项。
代码
我们的代码看起来像这样,其中 GetData 是我们的实际查询:
var data = _queryHandler.Handle(new GetData(tableName.ToString(), 0), database);
Run Code Online (Sandbox Code Playgroud)
从技术上讲,句柄只是连接到数据库,调用
conn.QueryAsync(query, parameters)
Run Code Online (Sandbox Code Playgroud)
GetData 看起来像这样(简化):
EXEC ('SELECT * FROM ' + @table + ')'
Run Code Online (Sandbox Code Playgroud)
推理
由于表名每次都不同,我们不想在输出上强制执行 POCO。有时是用户,有时是角色,可以这么说,所以无法预测它返回什么输出。
结果
这工作正常。我们可以提取变量中的数据,这看起来像是一个 IEnumerable,应该没问题。我认为我们可以循环读取它们并提取行。到目前为止,没有问题。
手头的问题
我们要做的下一件事是将来自 DapperRow 的数据转换为 json 字符串,但我似乎无法让数据表现得像 json 字符串,因为 JsonConvert.SerializeObject 惨遭失败。DapperRow 看起来像这样(再次简化)。
{{DapperRow, Id = '07501399-b385-4d8e-bacc-gad9d04c35f7', UserName = 'test8', ApplicationId = '4721fafb-12e6-4e3c-9298-etd82d18a0cb', IsApproved = 'True', IsLockedOut = 'False', CreateDate = '26-3-2019 07:52:55' …Run Code Online (Sandbox Code Playgroud)