c# - studio - user claims asp net identity
Uso del primer enfoque de Asp.Net Identity DataBase (4)
Eche un vistazo a estos proyectos en GitHub:
- https://github.com/kriasoft/AspNet.Identity - Proyecto de base de datos de identidad + Plantilla de VS
- https://github.com/kriasoft/AspNet-Server-Template - Proyecto de muestra / referencia
Que incluye:
- Plantilla de proyecto de base de datos SQL para ASP.NET Identity 2.0
- Base de datos de Entity Framework: primer proveedor (es)
- Código fuente y muestras
Necesito integrar la última versión de MVC de Asp.Net con una base de datos existente que tiene una columna adicional String Address
a la tabla dbo.AspNetUsers
Necesito crear una instancia ApplicationUser
que tenga la propiedad Address.
¿Alguna idea de cómo hacerlo?
He tenido éxito en la integración de una base de datos existente a través de Database First con Identity Framework 2.0. He escrito una publicación de blog here que utiliza ASP.NET MVC 5, Identity Framework 2.0 y la plantilla SPA de Visual Studio 2013 Update 2 RTM.
Espero que esto ayude a cualquiera en su viaje porque contiene algunos puntos que no figuran en un solo lugar y que tuve que resolver por mi cuenta.
Una posible solución que funciona para mí, básicamente, puedo integrar Asp.Net Identity User Profiles con una base de datos existente.
Obteniendo las Tablas Asp.Identity:
- Crear un proyecto MVC con autenticación Cuenta de usuario individual
- Abra la base de datos que figura en DefaultConnection en Web.config. Se llamará (aspnet- [timestamp] o algo así).
- Guíe las tablas de la base de datos utilizando SQL Server Management Studio (adjunte la base de datos para mdc).
Alternativamente, use algo como http://identity.codeplex.com/
Integración con su db existente:
- Inserte las tablas con guiones en la base de datos existente en SQL Server Management Studio.
- Personalice y agregue relaciones a ApplicationUser (si es necesario).
- Cree un nuevo proyecto web> MVC> DB First Project> Importar base de datos con EF ....
- En IdentityModels.cs, cambie ApplicationDbContext: base ("DefaltConnection") para usar el DbContext de su proyecto.
Ahora tiene Asp.Identity Tables en su db con modelo ER en su aplicación.
Asp.Identity Profile Agregar nuevas propiedades:
- Habilite las primeras migraciones de bases de datos del código del Entity Framework, solo en VS vaya a Herramientas ''Consola del administrador de paquetes'',
Ejecute el comando "Habilitar migraciones"; Una vez que habilitamos las migraciones de la base de datos, podemos continuar y agregar nuevas propiedades para nuestro perfil de usuario
Para agregar nuevas propiedades, modifique el archivo IdentityModels.cs, por ejemplo:
public class ApplicationUser : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string EmailID { get; set; }
}
Agregar nueva migración
Una vez que agreguemos las propiedades, traiga la consola de Package Manager y ejecute el siguiente comando.
Agregar-Migración "YouMigrationName"
Este comando generará un archivo de script de base de datos, ahora ejecuta el siguiente comando para ejecutar este archivo de script contra la base de datos.
Update-Database
Ahora, todas las propiedades nuevas se convertirán en campos de tabla en la misma tabla de base de datos.
Espero que pueda ayudar a otros, si tiene una idea mejor, hágamelo saber.
public class MyUser: IdentityUser {public virtual MyUserInfo MyUserInfo {get; conjunto; }}
public class MyUserInfo{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class MyDbContext : IdentityDbContext<MyUserInfo> //Edited to MyUserInfo
{
public MyDbContext()
: base("DefaultConnection")
{
}
public System.Data.Entity.DbSet<MyUserInfo> MyUserInfo { get; set; }
}
Obteniendo información de perfil
Cuando el usuario UserId
sesión, puede mostrar la información del perfil haciendo lo siguiente Obtenga el UserId
de UserId
actual conectado, para que pueda buscar al usuario en el sistema de identidad ASP.NET
var currentUserId = User.Identity.GetUserId();
Cree una instancia del UserManager
en el sistema ASP.Identity para que pueda buscar al usuario en el sistema
var manager = new UserManager<MyUser>(new UserStore<MyUser>(new MyDbContext()));
Obtiene el objeto Usuario
var currentUser = manager.FindById(User.Identity.GetUserId());
Obtener la información de perfil sobre el usuario
currentUser.MyUserInfo.FirstName