【问题标题】:ASP.NET Core Identity Implementation using Cassandra Database使用 Cassandra 数据库的 ASP.NET Core 身份实现
【发布时间】:2019-08-21 23:30:14
【问题描述】:

我正在使用 Windows 上的 Cassandra 数据库构建 ASP.NET Core MVC 应用程序。

我需要帮助使用 Cassandra 实现 ASP.NET Core Identity。

我在 Google 上找到了 2.0.0.1 版本的 AspNet.Identity.Cassandra,但它与 ASP.NET Core 1.0 不兼容。

【问题讨论】:

  • 您有什么问题或具体问题?要求我们为您查找资源(指南、教程)或库是题外话。提问前请阅读常见问题解答:stackoverflow.com/help/on-topic

标签: cassandra asp.net-core


【解决方案1】:

我正在为ASP.NET Core Identity 开发数据存储适配器 它允许您构建 ASP.NET Core Web 应用程序,包括成员资格、登录和用户数据。使用此库,您可以将用户的会员相关数据存储在 Apache Cassandra 上。

请注意该库是 alpha 版本,需要完成

如果您想尝试,请按照以下步骤操作:

1 - 从包管理器控制台运行以下命令以安装 Cassandra 身份提供程序。

Install-Package AspNetCore.Identity.Cassandra -Version 1.0.0-alpha1

2 - 将设置添加到 appsettings.json

{   
    "CassandraNodes": [
        "127.0.0.1"
    ], 
    "CassandraOptions": {
        "KeyspaceName": "identity",
        "Replication": {
            "class": "NetworkTopologyStrategy",
            "datacenter1": "1"
        }
    } 
}

3 - 在 Startup.cs

中配置服务
public void ConfigureServices(IServiceCollection services)
{    
    // CassandraOptions configuration
    services.Configure<CassandraOptions>(Configuration.GetSection("CassandraOptions"));

    // Cassandra ISession initialization
    services.AddCassandraSession<Cassandra.ISession>(() =>
    {
        var cluster = Cassandra.Cluster.Builder()
            .AddContactPoints(Configuration.GetSection("CassandraNodes").GetChildren().Select(x => x.Value))
            .Build();
        var session = cluster.Connect();
        return session;
    });

    // Added custom Cassandra stores
    services.AddIdentity<ApplicationUser, ApplicationRole>()
        .UseCassandraStores<Cassandra.ISession>()
        .AddDefaultTokenProviders();

    // Other code omitted
}

4 - 最后在 Program.cs

中初始化 DB
public static class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .Build()
            .InitializeIdentityDb<ApplicationUser, ApplicationRole>();
}

如需更多信息,请查看 github 上的project site

【讨论】:

  • @LW001 我已经改进了我的答案
【解决方案2】:

很少的选择

  1. 尝试为 ASP.net 核心实现您自己的 cassandra 身份,有许多示例如何为 ASP.net(使用 Google)创建自定义 IdentityUser,然后使其与 Cassandra 一起使用
  2. 将 AspNet.Identity.Cassandra project 分叉/更新为 .net 核心(开源,因此很容易实现您自己的)
  3. 使用其他提供程序,而不是 Cassandra 数据库
  4. 在 github 上请求更新(第 2 部分的链接。)

【讨论】:

    猜你喜欢
    • 2016-06-21
    • 2020-03-29
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    相关资源
    最近更新 更多