Funções e Projetos do ASP.net
EDITAR - Reescreva minha pergunta original para fornecer um pouco mais de informação
Informação de fundo
No meu trabalho, estou trabalhando em um aplicativo Web ASP.Net para nossos clientes. Em nossa implementação, usamos tecnologias como autenticação de formulários com MembershipProviders e RoleProviders. Tudo correu bem até eu encontrar algumas dificuldades na configuração das funções, porque as funções não são de todo o sistema, mas estão relacionadas às contas e projetos dos clientes.
Não posso citar nossa configuração / fórmula exata, porque acho que nossa empresa não aprovaria isso ...
O que é um cliente / projeto?
Nossa empresa fornece informações de gerenciamento para nossos clientes anualmente (ou outro intervalo).
Em nossos sistemas, um cliente / contrato consiste em:
Configuração do site da extranet
Eventualmente, queremos que todos os clientes possam acessar suas informações de gerenciamento com nosso sistema online. A extranet consiste em dois sites:
O site de medição é a parte mais interessante da extranet. Criaremos submódulos para novas visões gerais, relatórios, gerenciamento e manutenção de recursos importantes para a pesquisa.
Nossa solução do Visual Studio consiste em vários projetos. Um aplicativo da web chamado Portal para a base. Os sites e módulos são diretórios virtuais dentro desse aplicativo (facilita o compartilhamento de MasterPages entre outras coisas).
Que tipo de papéis?
Os seguintes usuários (leia-se: papéis) usarão o sistema:
E os usuários do ASP.Net?
O sistema terá muitos usuários do ASP.Net, vamos nos concentrar nos usuários do cliente:
Estrutura de URL
Estes são URLs típicos em nosso aplicativo:
Também criaremos um URL de documento, no qual você pode solicitar um documento específico por meio do GUID. O sistema precisará verificar se o usuário possui direitos sobre o documento. O documento está relacionado a uma Medida, o Usuário ou funções específicas têm direitos específicos para o documento.
Qual é o problema? (finalmente ;))
As funções não são suficientes para determinar o que um usuário tem permissão para ver / acessar / baixar um item específico. Não basta dizer que um determinado item de navegação está acessível aos Gerentes. Quando o usuário solicita o Measurement 1000, precisamos verificar se o usuário não apenas possui uma função de Gerente, mas também uma função de Gerente para o Measurement 1000.
Resumido:
Como podemos limitar os usuários às suas contas / medidas?
(lembre-se de superusuários ver todas as medidas, alguns gerentes apenas medidas específicas)
Como podemos aplicar funções no nível de produto / medição? (o usuário X pode ser o contato principal da medida 1, mas apenas um gerente da medida 2)
Como podemos limitar o acesso do gerente à tela de relatórios e apenas aos relatórios de seus departamentos?
Tudo com a magia das classes asp.net, talvez com uma implementação personalizada de provedor de função.
Pergunta / problema semelhante ao Stackoverflow
ASP.NET, como gerenciar usuários com diferentes tipos de funções