Seguridad basada en documentos en ASP.NET MVC

Ya sé sobre seguridad basada en roles y usuarios en ASP.NET MVC. Pero ahora necesito algo un poco más granular.

Digamos que tengo una lista de documentos, algunos de los cuales el usuario está autorizado para, otros no. Cada documento tiene un registro correspondiente en una tabla de documentos en una base de datos. Los documentos se pueden descargar para ver, si el usuario tiene acceso de seguridad. Los documentos también se pueden agregar, si tiene el rol. Cada documento tiene una URL y cada lista de documentos tiene una URL.

Me gustaría recortar la lista de forma que el usuario solo vea los documentos para los que está autorizado. Pero también debo autenticar las solicitudes de URL para estas listas y documentos, ya que no hay nada que impida que un usuario marque un documento al que ya no tiene acceso, o simplemente escriba la URL en el navegador.

¿Es el modelo de seguridad basado en roles incorporado adecuado para esto, o necesito crear una seguridad separada basada en tablas? ¿Puedo poner la seguridad en mi repositorio, para que los registros devueltos ya estén recortados, o debería ser parte del controlador? ¿Necesito un atributo de seguridad para validar la solicitud del controlador, o debo ponerlo en el método del controlador como las primeras líneas de código?

Respuestas a la pregunta(2)

Su respuesta a la pregunta