小编Gam*_*bit的帖子

没有注册名为“默认”的IUserTokenProvider

我在使用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)

c# identity change-password asp.net-core usertokenprovider

6
推荐指数
0
解决办法
529
查看次数

Dapper 行到 json

作为 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)

.net c# json dapper

5
推荐指数
1
解决办法
7621
查看次数