Patrón de depósito y estratificación. ¿Dónde aplico la seguridad?

votos
10

Hago mi mejor esfuerzo para diseñar mi aplicación web con buena separación entre las capas. Estoy utilizando el patrón de repositorio y, como tal, tengo un SQLObjectRepository al que llama mi ObjectService al que llama mi front end web.

En mi modelo de objetos, el usuario está asociado con una o más regiones que deben filtrar los objetos a los que deberían tener acceso. Mi pregunta es, cuando estoy buscando objetos, ¿pongo el código en el servicio para establecer los permisos en los objetos o debería estar ese código en el repositorio? Si el usuario es miembro de 2 regiones, ¿debo pasar al usuario como un parámetro para el servicio, o debo pasar las regiones del usuario al servicio?

Publicado el 09/12/2008 a las 19:49
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
3

Me gustaría:

  • Escriba el control de seguridad de tal forma que pueda aplicarse en el lugar que desee. De esta forma, puede refactorizar a medida que cambian los requisitos.

  • Si el control de seguridad realmente siempre se aplicará, colóquelo en la capa de repositorio (o mejor, en un aspecto si su idioma lo admite) para que varios servicios compartan seguridad común si usan el mismo repositorio. De lo contrario, colóquelo en el servicio (o un aspecto que actúe sobre el servicio).

  • pasar el objeto de usuario completo al mecanismo de comprobación de seguridad:

    • si la verificación de seguridad se vuelve más compleja (depende de otras propiedades del usuario), la API no cambiará;
    • tiene más sentido semántico: está comprobando que el usuario tiene permiso para hacer algo, no una lista de países.
Respondida el 09/12/2008 a las 22:56
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more