tutorial net mvc hacer example español como autenticacion asp c# asp.net asp.net-mvc asp.net-mvc-5 asp.net-identity

c# - net - como hacer un login en mvc 4



Desacoplamiento de ASP.NET MVC 5 Identity para permitir la implementación de una aplicación en capas (1)

Soy nuevo en ASP.NET MVC y he estado desarrollando una aplicación MVC 5 con autenticación de usuario individual. He estado haciendo un patrón en capas cuando hago mis aplicaciones, como separar capas de modelos, DAL, Repos, etc., pero ahora en MVC 5, quiero poder usar el usuario y la administración de roles y la autenticación a la que llaman identidad. , y luego todavía tengo esa estructura estratificada para mi aplicación porque en este momento parece que Identity está muy relacionada con el proyecto MVC en sí mismo con el usuario y los modelos a seguir allí y el contexto también.

Lo que hice en mi aplicación por el momento es que tengo todas mis capas supuestas para ser separadas como mi DAL, UnitOfWork, Repos, otros modelos, etc. en el proyecto MVC (¡en carpetas separadas!) Solo para hacerlo funcionar, para ahora. Y sé que no es la forma correcta de hacerlo.

Entonces, ¿puede alguien señalarme algunos buenos ejemplos o artículos sobre esto o explicarlo directamente si es posible o no y cómo? Google no ha sido amigable conmigo acerca de esto. ¡Gracias!


Aquí hay un borrador rápido de lo que probaría ... Crearía estas capas:

  • Contoso.Core (Biblioteca de clases)
  • Contoso.Data (Biblioteca de clases)
  • Contoso.Service (Biblioteca de clases)
  • Contoso.Web.Framework (Biblioteca de clases)
  • Contoso.Web (ASP.NET MVC 5.0)

Contoso.Core:

Esta capa contiene todas mis entidades / clases que representan mi base de datos TABLAS.

Entonces, por ejemplo, tendría un:

  • Clase User.cs.
  • Clase de Product.cs
  • Clase ProductDetail.cs
  • Etc ..

Algunas personas llaman a estas entidades / clases: los objetos de dominio, otros lo llaman las clases de POCO.

O bien o bien, estas entidades / clases se definen en la capa principal ya que pueden (o no) utilizarse entre las otras capas.

Contoso.Data:

Esta capa es donde defino mi clase ContosoDbContext.cs . Es dentro de ese archivo que tengo todo mi DbSet<> definido. Entonces, por ejemplo, tendría lo siguiente dentro de mi ContosoDbContext.cs :

  • público DbSet User {get; conjunto; }
  • public DbSet Product {get; conjunto; }
  • public DbSet ProductDetail {get; conjunto; }

Huelga decir que la capa Contoso.Data TENDRÁ UNA DEPENDENCIA en la capa Contoso.Core . Además, dentro de esa capa Contoso.Data tendré mi repositorio genérico y todo lo relacionado con el "acceso a los datos".

Contoso.Service:

Esta capa sería donde pongo todas mis reglas comerciales. Por ejemplo, puedo tener una clase UserService.cs que podría tener un método Login() . El método Login () recibiría un nombre de usuario / contraseña y llamaría al Repositorio para buscar al usuario.

Como la capa de Servicio necesita el Depósito, TENDRÉ UNA DEPENDENCIA en la capa Contoso.Data Y porque estaré jugando con la clase Usuario (que pasa a vivir dentro de la capa Contoso.Core ), TAMBIÉN TENDRÉ UNA DEPENDENCIA en la capa Contoso.Core .

Contoso.Web.Framework:

Esta capa tendría una dependencia en Contoso.Core , Contoso.Data y Contoso.Service . Contoso.Web.Framework esta capa Contoso.Web.Framework para configurar mi Inyección de dependencias.

Contoso.Web:

La capa final, la aplicación MVC 5.0, dependería de Contoso.Web.Framework AND en Contoso.Service AND en las capas Contoso.Core .

Los Controladores invocarían métodos que viven dentro de las clases definidas en su capa Contoso.Service (por ejemplo, el método Login ()).

El método Login () puede o no, por ejemplo, devolver una clase User (nula o poblada) y porque devuelve una clase User Y PORQUE estamos dentro de un Controller, nuestra capa Contoso.Web necesita una dependencia del Contoso.Service y Contoso.Core .

Por supuesto, no he detallado todo aquí o en todas las capas, pero esto es solo para darte un ejemplo del tipo de arquitectura que usaría.

Hasta ahora, no he respondido a su pregunta, pero con poco conocimiento sobre MVC 5.0 y su nuevo mecanismo de Identidad, creo que la capa Contoso.Core debería tener una dependencia en Microsoft.AspNet.Identity.EntityFramework además de Microsoft.AspNet.Identity.Core

Del mismo modo, mi clase ContosoDbContext.cs necesitaría implementar la interfaz IdentityDbContext que pertenece al Microsoft.AspNet.Identity.EntityFramework.dll .

Esto significa que mi capa Contoso.Data tendría una dependencia en Microsoft.AspNet.Identity.EntityFramework y muy probablemente también en Microsoft.AspNet.Identity.Core ...

Como dices, cuando creas un nuevo proyecto MVC 5.0, todo esto existe y se define dentro de la única aplicación. Nada está o ha sido desacoplado en capas. Entonces, en la arquitectura anterior, la clase ContosoDbcontext.cs vive dentro de la capa Contoso.Data y NO directamente dentro de la aplicación ASP.NET MVC.

Como no he probado la nueva identidad de ASP.NET ni intenté desacoplar las cosas, no sabría cómo responder honestamente a su pregunta. Supongo que tendrás que intentar mover las cosas.

Si lo hace, siéntase libre de decirnos cómo sucedió y cuáles son las cosas / problemas que encontró.

Mientras tanto, espero que esto te haya ayudado a arrojar algo de luz (o no).

Vince