Why asp.net Identity user id is string? Why asp.net Identity user id is string? asp.net asp.net

Why asp.net Identity user id is string?


With ASP.NET Core, you have a very simple way to specify the data type you want for Identity's models.

First step, override identity classes from < string> to < data type you want> :

public class ApplicationUser : IdentityUser<Guid>{}public class ApplicationRole : IdentityRole<Guid>{}

Declare your database context, using your classes and the data type you want :

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, Guid>    {        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)            : base(options)        {        }        protected override void OnModelCreating(ModelBuilder builder)        {            base.OnModelCreating(builder);            // Customize the ASP.NET Identity model and override the defaults if needed.            // For example, you can rename the ASP.NET Identity table names and more.            // Add your customizations after calling base.OnModelCreating(builder);        }    }

And in your startup class, declare the identity service using your models and declare the data type you want for the primary keys :

services.AddIdentity<ApplicationUser, ApplicationRole>()            .AddEntityFrameworkStores<ApplicationDbContext, Guid>()            .AddDefaultTokenProviders();


Depending on which version of ASP.Net authentication you're using, on the database ASP.NET Identity v2 should be storing it as a uniqueidentifier (Guid) in the AspNetUsers table. In more preceding versions it will store the user id as an int in the webpages_Membership table.

I believe it surfaces it as a string so it can be any data type you like under the hood and this can then be cast within your code as required.