如何在我的 Sql 数据库中使用 AspNet.Identity 核心
How to Use AspNet.Identity core in My Sql database
我正在使用 asp dot net core 2 和 MySql 数据库 开发一个应用程序。请帮助我如何在 MySqlDatabase.
中使用 Asp Net Identity
编辑:
目前.Net Core 2.0不支持Identity with MySql,不久的将来可能会再次支持。
__
您需要将 Entity Framework 和 MySQL 插入 Pomelo 的连接中,Identity 应该可以工作。检查一下 -> https://damienbod.com/2016/08/26/asp-net-core-1-0-with-mysql-and-entity-framework-core/
您可以在 MySQL 数据库的同时创建身份数据库
并使用身份数据库进行授权
我就是这样做的。
//MySQL Database
services.AddDbContext<EFDbContext>(options =>
options.UseSqlServer("Server = ; Database =MySQL ; Trusted_Connection = True; MultipleActiveResultSets = true"));
//Identity Database
services.AddDbContext<EFIdentityDbContext>(options =>
options.UseSqlServer("Server = ; Database = Identity; Trusted_Connection = True; MultipleActiveResultSets = true"));
这应该可以与您的 MySQL 数据库一起正常工作
public class EFIdentityDbContext : IdentityDbContext
{
public EFIdentityDbContext(DbContextOptions<EFIdentityDbContext> options )
:base (options)
{
}
}
我不得不为客户做这件事。我在 ASP.NET Core 1.0 的应用程序中做了,但出于好奇,我也尝试了 .NET Core 2.0 中的应用程序。
我首先使用包管理器控制台从 https://www.nuget.org/packages/Pomelo.EntityFrameworkCore.MySql/ 安装 Entity Framework MySQL 包。
之后我在 startup.cs 方法 ConfigureServices 中更改了选项 UseSqlServer 到UseMySql,如下图。
在我的 appsettings.json 中,我有一个名为 IdentityConnection 的 MySQL 连接,如下所示:
{
"ConnectionStrings": {
"IdentityConnection": "Server=127.0.0.1;Database=identitycoredb;Uid=root;Pwd=1234;"
},
为了创建身份表,我在包管理器控制台中执行了迁移命令:
EntityFrameworkCore\Update-Database -Verbose
我迟到了这个答案,但是,这个开发人员已经把整个解决方案很好地放在这个存储库中。
https://github.com/jasonsturges/mysql-dotnet-core
将相关代码块放在此处。
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<IdentityRole>(entity => entity.Property(m => m.Id).HasMaxLength(127));
builder.Entity<IdentityRole>(entity => entity.Property(m => m.ConcurrencyStamp).HasColumnType("varchar(256)"));
builder.Entity<IdentityUserLogin<string>>(entity =>
{
entity.Property(m => m.LoginProvider).HasMaxLength(127);
entity.Property(m => m.ProviderKey).HasMaxLength(127);
});
builder.Entity<IdentityUserRole<string>>(entity =>
{
entity.Property(m => m.UserId).HasMaxLength(127);
entity.Property(m => m.RoleId).HasMaxLength(127);
});
builder.Entity<IdentityUserToken<string>>(entity =>
{
entity.Property(m => m.UserId).HasMaxLength(127);
entity.Property(m => m.LoginProvider).HasMaxLength(127);
entity.Property(m => m.Name).HasMaxLength(127);
});
}
这是我在发布此答案时正在从事的项目中测试的。
我正在使用 asp dot net core 2 和 MySql 数据库 开发一个应用程序。请帮助我如何在 MySqlDatabase.
中使用 Asp Net Identity编辑: 目前.Net Core 2.0不支持Identity with MySql,不久的将来可能会再次支持。
__
您需要将 Entity Framework 和 MySQL 插入 Pomelo 的连接中,Identity 应该可以工作。检查一下 -> https://damienbod.com/2016/08/26/asp-net-core-1-0-with-mysql-and-entity-framework-core/
您可以在 MySQL 数据库的同时创建身份数据库 并使用身份数据库进行授权
我就是这样做的。
//MySQL Database
services.AddDbContext<EFDbContext>(options =>
options.UseSqlServer("Server = ; Database =MySQL ; Trusted_Connection = True; MultipleActiveResultSets = true"));
//Identity Database
services.AddDbContext<EFIdentityDbContext>(options =>
options.UseSqlServer("Server = ; Database = Identity; Trusted_Connection = True; MultipleActiveResultSets = true"));
这应该可以与您的 MySQL 数据库一起正常工作
public class EFIdentityDbContext : IdentityDbContext
{
public EFIdentityDbContext(DbContextOptions<EFIdentityDbContext> options )
:base (options)
{
}
}
我不得不为客户做这件事。我在 ASP.NET Core 1.0 的应用程序中做了,但出于好奇,我也尝试了 .NET Core 2.0 中的应用程序。
我首先使用包管理器控制台从 https://www.nuget.org/packages/Pomelo.EntityFrameworkCore.MySql/ 安装 Entity Framework MySQL 包。
之后我在 startup.cs 方法 ConfigureServices 中更改了选项 UseSqlServer 到UseMySql,如下图。
在我的 appsettings.json 中,我有一个名为 IdentityConnection 的 MySQL 连接,如下所示:
{
"ConnectionStrings": {
"IdentityConnection": "Server=127.0.0.1;Database=identitycoredb;Uid=root;Pwd=1234;"
},
为了创建身份表,我在包管理器控制台中执行了迁移命令:
EntityFrameworkCore\Update-Database -Verbose
我迟到了这个答案,但是,这个开发人员已经把整个解决方案很好地放在这个存储库中。
https://github.com/jasonsturges/mysql-dotnet-core
将相关代码块放在此处。
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<IdentityRole>(entity => entity.Property(m => m.Id).HasMaxLength(127));
builder.Entity<IdentityRole>(entity => entity.Property(m => m.ConcurrencyStamp).HasColumnType("varchar(256)"));
builder.Entity<IdentityUserLogin<string>>(entity =>
{
entity.Property(m => m.LoginProvider).HasMaxLength(127);
entity.Property(m => m.ProviderKey).HasMaxLength(127);
});
builder.Entity<IdentityUserRole<string>>(entity =>
{
entity.Property(m => m.UserId).HasMaxLength(127);
entity.Property(m => m.RoleId).HasMaxLength(127);
});
builder.Entity<IdentityUserToken<string>>(entity =>
{
entity.Property(m => m.UserId).HasMaxLength(127);
entity.Property(m => m.LoginProvider).HasMaxLength(127);
entity.Property(m => m.Name).HasMaxLength(127);
});
}
这是我在发布此答案时正在从事的项目中测试的。