Pergunta

Eu estou debatendo a melhor maneira de propagar permissões bastante complexas do servidor para uma aplicação AJAX, e eu não tenho certeza que a melhor abordagem a adoptar.

Essencialmente, quero que meus permissões para ser definido para que eu possa solicitar um conjunto de permissões em um tiro, e ajustar a interface do usuário conforme apropriado (as mudanças de interface do usuário pode ser tão baixo nível como desabilitar alguns itens do menu de contexto). Claro, eu ainda preciso fazer valer o lado do servidor permissões.

Então, eu queria saber se alguém tem alguma sugestão para a melhor maneira de

  1. manter as permissões e usá-los no código do servidor
  2. têm fácil acesso às permissões em javascript
  3. não tem que fazer um pedido de ida e volta para o servidor para cada permissão individual

Os pensamentos?

Foi útil?

Solução

Se você tem um conjunto claro de permissões, como um "nível de usuário" ou "Tipo de usuário", você poderia simplesmente passar o valor para baixo em um campo escondido e acesso o valor através do DOM. Você ainda pode fazer isso se as suas permissões eram mais granular, mas você quer ter um monte de campos ocultos ou você teria para codificar a informação em XML ou JSON ou algum outro formato.

Você pode defini-las como sinalizadores de bit de modo que você poderia ou um único valor numérico com uma máscara para ver se o usuário teve a permissão para uma atividade específica. Isso seria muito flexível e contanto que você não tem mais do que 32 ou assim "direitos" específicos, que permitiria a qualquer permutação desses direitos em um pacote muito pequeno (basicamente um int não assinado).

Por exemplo:

0x00000001 //edit permission
0x00000002 //create new thing permission
0x00000004 //delete things permission
0x00000008 //view hidden things permission
   .
   .
   .
0x80000000 //total control of the server and everyone logged in

Em seguida, um usuário com uma permissão de 0x000007 poderia editar, criar e excluir, mas nada mais.

Em qualquer caso, eu acho que você está no caminho certo - fazer o pedido uma vez por página invocação, armazenar as permissões em uma estrutura global de dados JavaScript, e de lá ir. AJAX é bom, mas você não quer para consultar o servidor para cada permissão específica todo sua página. Você poderia fazê-lo uma vez no carregamento da página, configurar a apresentação de sua página e salvar o valor em uma variável global, em seguida, fazer referência a permissão (s) localmente para funções de eventos.

Outras dicas

Se você transmitir a estrutura de permissão para o cliente como um objeto JSON (ou XML, se você preferir), você pode manipular esse objeto com o código do lado do cliente, e enviá-lo de volta para o servidor, que pode fazer o que for necessidades para validar os dados e persistem-lo.

Eu não necessariamente vê-lo como a solução mais "correta", mas seria possível manter todo o material permissão no lado do servidor, e apenas servem a interface do usuário atualizados em vez de algum tipo de JSON sistema de permissões?

Você tem que tomar a decisão com base em quão ocupado e intenso seu aplicativo espera ser, mas definitivamente um vale a tomada de decisões de qualquer maneira

codificá-los como JSON .

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