How to Use AspNet.Identity core in My Sql database

前端 未结 4 1898
你的背包
你的背包 2021-02-06 07:17

I am developing one application using asp dot net core 2 using MySql database.Please help me How can i use Asp Net Identity in

相关标签:
4条回答
  • 2021-02-06 07:27

    You Can create an Identity Database along with your MySQL Database and use the Identity database for your authorization

    This is how I do it.

       //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"));
    

    This should work fine along with your MySQL DB

    public class EFIdentityDbContext : IdentityDbContext
    {
        public EFIdentityDbContext(DbContextOptions<EFIdentityDbContext> options )
            :base (options)
        {
    
        }
    
    
    }
    
    0 讨论(0)
  • 2021-02-06 07:35

    I am late to this answer but, this developer has put the whole solution nicely, in this repository.

    https://github.com/jasonsturges/mysql-dotnet-core

    Putting the relevant code blocks here.

    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);
        });
    }
    

    This is tested by me on a project i was working on at the time of posting this answer.

    0 讨论(0)
  • 2021-02-06 07:41

    EDIT: At this point, .Net Core 2.0 doesn't support Identity with MySql, in a near future it may be supported again.

    __

    You need to plug Entity Framework with MySQL with Pomelo's connection and Identity should work. Check this out -> https://damienbod.com/2016/08/26/asp-net-core-1-0-with-mysql-and-entity-framework-core/

    0 讨论(0)
  • 2021-02-06 07:49

    I had to do this for a client. And I did in an application with ASP.NET Core 1.0, but for curiosity I also tried for an application in .NET Core 2.0.

    What I did was first install the Entity Framework MySQL package from https://www.nuget.org/packages/Pomelo.EntityFrameworkCore.MySql/ using package manager console.

    After that I changed in the startup.cs, in the method ConfigureServices, the option UseSqlServer to UseMySql, like the image below.

    In my appsettings.json I have the MySQL connection named IdentityConnection like this:

    {
        "ConnectionStrings": {
            "IdentityConnection": "Server=127.0.0.1;Database=identitycoredb;Uid=root;Pwd=1234;"
        },
    

    To create the identity tables I executed the migration command in package manager console:

    EntityFrameworkCore\Update-Database -Verbose
    

    0 讨论(0)
提交回复
热议问题