Saltar al contenido

Cómo extender IdentityUser con propiedad personalizada

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:

  1. Crear un Aplicación web ASP.NET
  2. Asegúrate de seleccionar MVC y el Autenticación es Cuentas de usuarios individuales
  3. Ir a Modelos carpeta → Abrir IdentityModels.csAplicación Usuario class y agregue la propiedad:

    public string Code { get; set; }
    
  4. Construye el proyecto
  5. Ir a INSTRUMENTOS menú → Administrador de paquetes Nuget → haga clic en Consola del administrador de paquetes
  6. 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.
    
  7. 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.
    
  8. 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á el Code 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.

  9. 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; }
    
  10. 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>
    
  11. 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 };
    
  12. 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..

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *