Pergunta

Ok, então eu estou procurando um pouco de orientação arquitetura, minha equipe está tendo a chance de certas decisões lançou re-com um novo recurso que estamos construindo, e eu queria ver o SO pensou :-) há, naturalmente, certas coisas que nós não estamos mudando, então a solução teria que se encaixar neste modelo. Ou seja, que nós temos uma aplicação ASP.NET, que utiliza serviços web para permitir aos usuários executar ações no sistema.

O problema surge porque, como com muitos sistemas, diferentes usuários precisam ter acesso a diferentes funções. Alguns papéis têm acesso ao botão Y, e outros têm acesso ao botão Y e B, enquanto outro ainda só tem acesso a B. Na maioria das vezes que eu vejo isso, os desenvolvedores simplesmente colocados em uma mish-mosh de if para lidar com o estado UI. Meu medo é que não for controlada, isso vai se tornar uma confusão insustentável, porque, além de colocar lógica de autorização na GUI, ele precisa ser colocado nos serviços web (que são chamados via ajax) para garantir que somente usuários autorizados chamar certos métodos .

Então, minha pergunta para você é, como pode um sistema ser concebido para diminuir o aleatório ad-hoc se as declarações aqui e ali que o check para funções específicas, o que poderia ser re-utilizado tanto em GUI / code webform e serviço web código.

Apenas para maior clareza, esta é uma aplicação ASP.NET Web, usando webforms, e Script # para a funcionalidade AJAX. Não deixe que o script # jogá-lo fora de responder, não é fundamentalmente diferente do asp.net ajax: -)

Foi útil?

Solução

Mover-se do grupo tradicional, papel, ou permissão de nível de operação, há um esforço para "baseada em declarações" autorização, como o que foi entregue com o WCF.

Zermatt é o codinome para a aula Microsoft biblioteca que vai ajudar a aplicações baseadas em reivindicações desenvolvedores construir sobre o servidor eo cliente. Active Directory vai se tornar um dos STS uma aplicação seria capaz de autorizar contra simultaneamente com a sua própria, bem como outros servidores padrão da indústria ...

Outras dicas

No código completo (p. 411) Steve McConnell dá o seguinte conselho (que Bill Gates lê como uma história para dormir na Microsoft comercial).

"usado em circunstâncias adequadas, código impulsionado mesa é mais simples do que a lógica complicado, mais fácil de modificar e mais eficiente."

"Você pode usar uma tabela para descrever a lógica que é muito dinâmico para representar no código."

"A abordagem baseada em tabelas é mais econômico do que a abordagem anterior [objeto de design rote orientada]"

Usando uma abordagem baseada em tabela que você pode facilmente adicionar novos "usuários" (como na idéia de modelagem de um usuário / agente junto com ele de ações). É uma boa maneira de evitar muitos "se" s. E eu usei isso antes em situações como a sua, e é mantido o código bonito e arrumado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top