He visto muchas páginas similares en la web, pero la mayoría usa un nuevo proyecto en lugar de uno existente, o no tiene las características necesarias. Entonces, tengo un MVC 5
proyecto existente y quiero integrar ASP.NET MVC5 Identity con las funciones de inicio de sesión, confirmación por correo electrónico y restablecimiento de contraseña .
Además de esto, también necesito crear todas las tablas necesarias en la base de datos, es decir, Usuario, Roles, grupos, etc. (utilizo EF Code First en mi proyecto). ¿Hay algún artículo o muestra que corresponda a estas necesidades? Cualquier sugerencia sería apreciada. Gracias por adelantado...
Respuestas:
Configurar la identidad para su proyecto existente no es algo difícil. Debe instalar algún paquete NuGet y hacer una pequeña configuración.
Primero instale estos paquetes NuGet con Package Manager Console:
Agregue una clase de usuario y con
IdentityUser
herencia:Haz lo mismo para el papel:
Cambie a su
DbContext
padre deDbContext
a meIdentityDbContext<AppUser>
gusta esto:Si usa la misma cadena de conexión y la migración habilitada, EF creará las tablas necesarias para usted.
Opcionalmente, puede ampliar
UserManager
para agregar la configuración y personalización que desee:Como la identidad se basa en OWIN, también debe configurar OWIN:
Agregue una clase a la
App_Start
carpeta (o en cualquier otro lugar si lo desea). Esta clase es utilizada por OWIN. Esta será tu clase de inicio.Casi hecho, simplemente agregue esta línea de código a su
web.config
archivo para que OWIN pueda encontrar su clase de inicio.Ahora, en todo el proyecto, puede usar Identity como cualquier proyecto nuevo que VS ya haya instalado. Considere la acción de inicio de sesión, por ejemplo
Puede hacer roles y agregar a sus usuarios:
También puede agregar un rol a un usuario, como este:
Al usarlo
Authorize
, podría proteger sus acciones o controladores:o
También puede instalar paquetes adicionales y configurarlos para que cumplan con sus requisitos,
Microsoft.Owin.Security.Facebook
según lo que desee.Nota: No olvide agregar espacios de nombres relevantes a sus archivos:
También puede ver mis otras respuestas como esta y esto para el uso avanzado de Identidad.
fuente
AppRole
el administrador de roles de Identity para clasificar a los usuarios. Y puesto queRole
s yRoleManager
ya se han puesto en práctica por sí misma identidad que no es necesario volver a escribir código ya implementado. Actualizaré la publicación para mostrarle cómo puede usar los roles. Y como dije antes, solo necesitas agregarAppUser
yAppRole
entidades para inicializar Identidad. Al heredar suDbContext
deIdentityDbContext<AppUser>
todas las tablas necesarias, agregue su tabla. No necesita hacer nada, solo habilitar la migración.Microsoft.AspNet.Identity.EntityFramework
en su dominio y otro para la interfaz de usuario.web.config
. No reemplace el viejo. Lea esto para más información . Creo que tu MVC también se actualizó.AspNetRoles
AspNetUserClaims
AspNetUserLogins
AspNetUserRoles
yAspNetUsers
Esto es lo que hice para integrar Identity con una base de datos existente.
Cree un proyecto MVC de muestra con la plantilla MVC. Esto tiene todo el código necesario para la implementación de Identity: Startup.Auth.cs, IdentityConfig.cs, código del controlador de cuenta, Manage Controller, modelos y vistas relacionadas.
Instale los paquetes nuget necesarios para Identity y OWIN. Obtendrá una idea al ver las referencias en el proyecto de muestra y la respuesta de @Sam
Copie todo este código a su proyecto existente. Tenga en cuenta que no olvide agregar la cadena de conexión "DefaultConnection" para que Identity se asigne a su base de datos. Compruebe la clase ApplicationDBContext en IdentityModel.cs donde encontrará la referencia a la cadena de conexión "DefaultConnection".
Este es el script SQL que ejecuté en mi base de datos existente para crear las tablas necesarias:
Verifique y resuelva los errores restantes y ya está. La identidad se encargará del resto :)
fuente
Recomiendo IdentityServer . Este es un proyecto de .NET Foundation y cubre muchos temas sobre autenticación y autorización.
Visión general
IdentityServer es un marco basado en .NET / Katana y un componente hospedable que permite implementar el inicio de sesión único y el control de acceso para aplicaciones web modernas y API que utilizan protocolos como OpenID Connect y OAuth2. Admite una amplia gama de clientes como aplicaciones móviles, web, SPA y de escritorio y es extensible para permitir la integración en arquitecturas nuevas y existentes.
Para más información, p. Ej.
Consulte la documentación y la demostración .
fuente