An ASP.NET Identity 2.1 provider for MySql
ASP.NET MVC 5 shipped with a new Identity system (in the Microsoft.AspNet.Identity.Core package) in order to support both local login and remote logins via OpenID/OAuth, but only ships with an Entity Framework provider (Microsoft.AspNet.Identity.EntityFramework).
-
Supports ASP.NET Identity 2.1
-
Contains the same IdentityUser class used by the EntityFramework provider in the MVC 5 project template.
-
Contains the same IdentityRole class used by the EntityFramework provider in the MVC 5 project template.
-
Supports additional profile properties on your application's user model.
-
Provides MySqlUserStore implementation that implements the same interfaces as the EntityFramework version:
- IUserStore,
- IUserLoginStore,
- IUserClaimStore,
- IUserRoleStore,
- IUserPasswordStore,
- IUserSecurityStampStore,
- IUserEmailStore,
- IUserLockoutStore<TUser, string>,
- IUserTwoFactorStore<TUser, string>,
- IUserPhoneNumberStore
For more detailed instructions read this blog post : ASP.NET Identity 2.1 implementation for MySQL
You will need to execute create script on your MySQL database which will create the tables required for the ASP.NET Identity provider.
-
Create a new ASP.NET MVC 5 project, choosing the Individual User Accounts authentication type.
-
Remove the Entity Framework packages and replace with MySql.AspNet.Identity.
- Uninstall-Package Microsoft.AspNet.Identity.EntityFramework
- Uninstall-Package EntityFramework
-
Install-Package MySql.AspNet.Identity
-
In ~/Models/IdentityModels.cs:
- Remove the namespaces:
- Microsoft.AspNet.Identity.EntityFramework
- System.Data.Entity
- Remove the namespaces:
-
Install NuGet Package called MySql.AspNet.Identity
- Add the namespace: MySql.AspNet.Identity This way ApplicationUser will inherit from another IdentityUser which resides in MySql.Asp.Net.Identity namespace
- Remove the entire ApplicationDbContext class. You don't need that!
-
In ~/App_Start/Startup.Auth.cs
- Remove app.CreatePerOwinContext(ApplicationDbContext.Create);
-
In ~/App_Start/IdentityConfig.cs
- Remove the namespaces:
- Microsoft.AspNet.Identity.EntityFramework
- System.Data.Entity
- In method public static ApplicationUserManager Create(IdentityFactoryOptions options, IOwinContext context) replace ApplicationUserManager with another which accepts MySqlUserStore like this:
- Remove the namespaces:
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
// var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>()));
var manager = new ApplicationUserManager(new MySqlUserStore<ApplicationUser>());