Como lidar melhor com permissões (não funções) na associação do asp.net, especificamente no ASP.NET MVC

Existem muitas perguntas (e informações) sobre como configurar a associação asp.net, provedores de função e afins. Se você deve ou não usar a plataforma interna fornecida pela microsoft, ou a função estender as classes base e a sua.

Decidi estender os provedores padrão e implementar meus próprios provedores de associação e função. Agora, minha pergunta é especificamente sobre autenticação de função.

Tradicionalmente, você criaria funções como 'Gerente, Administrador, Funcionário, Superusuário' ou o que você tiver. Mas o que você faria / deveria fazer com relação às permissões que considero um grão de controle mais fino? Deixe-me elaborar ....

No meu site asp.net mvc, tenho áreas diferentes, como administração, gerenciamento, mensagens, relatórios etc. Gostaria de criar funções para cada uma delas, como 'Administrador', 'Gerente', 'Reporter' etc. Sem a função apropriada, você pode tenha acesso a essa área do site. Então, eu bloqueava todos os controladores com isso no nível da classe.

Mas agora tome uma área como exemplo; mensagens e diga que queria ter permissões mais refinadas para CRUD; criar uma mensagem, visualizar / ler mensagens, editar mensagens, excluir mensagens etc.

Finalmente minha pergunta. Como seria melhor implementar esse grão mais fino de controle? Uma abordagem que eu vejo (não tenho certeza se é uma boa) é apenas criar funções de associação do asp.net para tudo. Então eu posso ter ....

Messenger (função de nível amplo), CreateMessage, ReadMessage, EditMessage, DeleteMessage.

Por um lado, gostaria que alguns usuários pudessem ler / visualizar mensagens. Mas não necessariamente crie ou exclua-os. Ações individuais do controlador podem ter as funções específicas aplicadas.

Você vê algum problema com essa abordagem? Você tem uma ideia melhor?

Solução até agora

Decidi criar meu próprio esquema e implementar provedores de associação e função personalizados. Meu esquema inclui;

Do utilizadorPerfil de usuárioPermissãoPermissionAssignmentFunçãoRoleAssignment

Vai ficar ausente nos próximos dias, mas será atualizado com mais informações quando eu tiver uma chance.

questionAnswers(3)

yourAnswerToTheQuestion