Solución:
Si sigue todos los pasos para agregar un campo personalizado al usuario, finalizará las tareas correctamente.
Aquí están todos los pasos para agregar un campo personalizado al usuario:
- Crear un Aplicación web ASP.NET
- Asegúrate de seleccionar MVC y el Autenticación es Cuentas de usuarios individuales
-
Ir a Modelos carpeta → Abrir IdentityModels.cs → Aplicación Usuario class y agregue la propiedad:
public string Code { get; set; }
- Construye el proyecto
- Ir a INSTRUMENTOS menú → Administrador de paquetes Nuget → haga clic en Consola del administrador de paquetes
-
Escribe
Enable-Migrations
y presione Ingresar y espere hasta que se complete la tarea. Verá una respuesta que dice:Checking if the context targets an existing database... Code First Migrations enabled for project WebApplication1.
-
Escribe
Add-Migration "Code"
y presione Ingresar y espere hasta que se complete la tarea. Verá una respuesta que dice:Scaffolding migration 'Code'. The Designer Code for this migration file includes a snapshot of your current Code First model. This snapshot is used to calculate the changes to your model when you scaffold the next migration. If you make additional changes to your model that you want to include in this migration, then you can re-scaffold it by running 'Add-Migration Code' again.
-
Escribe
Update-Database
y presione Ingresar y espere hasta que se complete la tarea. Verá una respuesta que dice:Specify the '-Verbose' flag to view the SQL statements being applied to the target database. Applying explicit migrations: [201611132135242_Code]. Applying explicit migration: 201611132135242_Code. Running Seed method.
En este paso, si actualiza Explorador de objetos de SQL Server y vaya a la base de datos y vea las tablas, bajo
dbo.AspNetUsers
debajo de las columnas, verá elCode
campo. Si no sabía qué base de datos o incluso qué servidor debería buscar, abra Web.Config file y eche un vistazo a la cadena de conexión que es algo como esto:<add name="DefaultConnection" connectionString="Data Source=(LocalDb)v11.0;AttachDbFilename=|DataDirectory|aspnet-WebApplication1-20161114125903.mdf;Initial Catalog=aspnet-WebApplication1-20161114125903;Integrated Security=True" providerName="System.Data.SqlClient" />
Puede ver la fuente de datos (que es la instancia del servidor SQL) y algo .mdf que es el nombre de la base de datos.
-
Ir a Modelos carpeta → Abrir AccountViewModels.cs archivo → RegisterViewModel class y agregue esta propiedad: (En APIv2 con EF6, puede agregar la siguiente línea en la carpeta Modelos → Archivo AccountBindingModels → Clase RegisterBindingModel)
public string Code { get; set; }
-
Ir a Puntos de vista carpeta → Cuenta carpeta → Abrir Register.cshtml archivo y agregue este código cerca de otros campos, por ejemplo, debajo de la contraseña:
<div class="form-group"> @Html.LabelFor(m => m.Code, new { @class = "col-md-2 control-label" }) <div class="col-md-10"> @Html.TextBoxFor(m => m.Code, new { @class = "form-control" }) </div> </div>
-
Ir a Controladores carpeta → Abrir AccountController.cs archivo → en la publicación http Registrarse acción, cambie la línea que crea usuario a esto:
var user = new ApplicationUser { UserName = model.Email, Email = model.Email, Code= model.Code };
-
Ejecute el proyecto y vaya a
/Account/Register
url y registrar un nuevo usuario. Después de registrar al usuario, si vuelve a la base de datos y Ver datos de dbo.AspNetUsers tabla, verá que el código se ha guardado.
Descargar
Puede clonar o descargar un ejemplo de trabajo aquí:
- r-aghaei / AddPropertyToIdentityUserExample
Más información: ¿Cómo agregar una propiedad personalizada a IdentityRole?
Si está interesado en saber cómo agregar una nueva propiedad a IdentityRole
, eche un vistazo a ¿Cómo agregar una propiedad personalizada a IdentityRole?
Espero que esto pueda ayudar a otros, ya que la publicación original tiene más de 1 año
Si ya ha creado el proyecto con ‘Autenticación Cuentas de usuario individuales:
En el Explorador de soluciones, vaya a proyecto> Modelos> IdentityModels.cs
debajo public class ApplicationUser: IdentityUser
(debe ser la primera clase).
Agregue sus propiedades personalizadas después
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
como mi ejemplo a continuación:
public class ApplicationUser : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
**//add custom properties here - these are just examples**
public bool SendEmails { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
Luego, usando NuGet Packagemanager:
- enable-migrations (si aún no lo ha hecho)
- agregar-migración [enter]
- nameYourMigration [enter]
- (vea el archivo de migración para verificar que se agregarán sus propiedades)
- actualizar base de datos [enter]
- Verifique su tabla db AspNetUsers para asegurarse de que las propiedades se agregaron correctamente
Espero que esto ayude..