Segurança baseada em documentos no asp.net MVC

Eu já sei sobre segurança baseada em usuário e função no ASP.NET MVC. Mas agora eu preciso de algo um pouco mais granular.

Digamos que eu tenha uma lista de documentos, alguns dos quais o usuário está autorizado, outros não. Cada documento possui um registro correspondente em uma tabela de documentos em um banco de dados. Os documentos podem ser baixados para visualização, se o usuário tiver acesso de segurança. Os documentos também podem ser adicionados, se você tiver a função. Cada documento tem um URL e cada lista de documentos tem um URL.

Eu gostaria de segurança cortar a lista para que o usuário veja apenas os documentos para os quais ele está autorizado. Mas também preciso autenticar as solicitações de URL para essas listas e documentos, já que não há nada que impeça um usuário de marcar um documento que não tenha mais acesso ou simplesmente digitar o URL no navegador.

O modelo de segurança interno baseado em funções é adequado para isso, ou preciso criar segurança separada baseada em tabela? Posso colocar a segurança no meu repositório, para que os registros retornados já estejam aparados ou devam fazer parte do controlador? Preciso de um atributo de segurança para validar a solicitação do controlador ou devo apenas colocá-lo no método do controlador como as primeiras linhas de código?

questionAnswers(2)

yourAnswerToTheQuestion