Tengo una aplicación MVC que tiene la estructura (simplificada) de la siguiente manera (de izquierda a derecha)¿Qué nivel de mi aplicación ASP.NET MVC debo verificar la información de Membresía?
interfaz de usuario -> CONTROLADORES -> Servicios -> REPOSITORIOS -> BASE DE DATOS
Hemos intentado para mantener cada capa desacoplada de la siguiente. Estamos utilizando la Membresía .NET para administrar la seguridad, y tenemos una función basada en permisos, digamos "Mostrar todos los documentos para mi tipo de usuario".
caso:
la capa de servicios no tienen conciencia de nuestra proveedor de pertenencia .NET? Entonces tendríamos los métodos de capa de servicio que se veían como "GetDocumentsByUserType (int UserTypeId) {..}"?
El método GetDocumentsByUserType() tenga en cuenta que estamos utilizando Membresía .NET, use métodos de Membresía para obtener el tipo de usuario actual, y devuelva los documentos relevantes?
también:
- ¿Tiene # 1 que mi capa de servicios menos seguro, ya que mi capa del controlador
podía pasar en cualquier cosa que quería como un UserType? - ¿El # 2 hace que mi capa de Servicios dependa demasiado de una tecnología específica, concretamente .NET
¿Membresía? ¿Hay alguna otra manera de considerar aquí?
Espero que haya proporcionado suficientes detalles. Por favor, grite si no y lo agregaré.
Gracias.
+1, IPrincipal es el camino a seguir. IPrincipals especialmente personalizados. PrincipalPermission es realmente ingenioso, pero habiéndolo utilizado en un proyecto en gran medida, realmente discutiría en contra de usarlo, es un poco de minas terrestres para la gente y realmente dificulta las pruebas al mismo tiempo que es difícil de probar. –
Muchas gracias, muchachos. Muy útil. – christofr
Aquí es donde se pone interesante, ¿qué sucede si necesito el campo de clave principal que representa al usuario en la base de datos? Sé que podría obtener el campo de nombre para el usuario, pero prefiero usar el campo de clave principal. ¿Cómo podría acceder a esto desde IPrincipal sin establecer el campo de nombre en el valor de la clave primaria (sé que suonds malo). – user1790300