Direitos
Alguem aqui utiliza esquema de direitos no aplicativo? Por exemplo, usuário ´A´ pode acessar funcionalidade ´B´ mas não pode acessar funcionalidade ´Z´. Como vocês fazem? Qual a estrutura das tabelas? Usam criptografia? Como é a segurança sobre essa tabela?
Rjun
Curtidas 0
Respostas
Daykas
12/09/2007
Você quer dizer níveis de permissão.
Eu uso. Na tabela de cadastro de usuários eu crio campos para isso de acordo com o número de menus criados.
Quando o usuário é cadastrado, o administradro marca os checks qu epossuem a inscrição do que ele pode acessar, ou desmarca o que não pode. Isso fica gravado na tabela.
Quando o usuário loga, o sistema precisa reconhecê-lo para autenticá-lo e, nesta verificação, o sistema habilita os menus de acordo com as permissões condecidas.
É mais ou menos assim: o menu financeiro só habilita se a coluna p4 do usuário for iguala a 1, senão fica desabilitada.
Para isso você deve criar uma função, senão vai encher de if, then e else.
Valew;
Eu uso. Na tabela de cadastro de usuários eu crio campos para isso de acordo com o número de menus criados.
Quando o usuário é cadastrado, o administradro marca os checks qu epossuem a inscrição do que ele pode acessar, ou desmarca o que não pode. Isso fica gravado na tabela.
Quando o usuário loga, o sistema precisa reconhecê-lo para autenticá-lo e, nesta verificação, o sistema habilita os menus de acordo com as permissões condecidas.
É mais ou menos assim: o menu financeiro só habilita se a coluna p4 do usuário for iguala a 1, senão fica desabilitada.
Para isso você deve criar uma função, senão vai encher de if, then e else.
Valew;
GOSTEI 0
Paullsoftware
12/09/2007
Você quer dizer níveis de permissão.
Eu uso. Na tabela de cadastro de usuários eu crio campos para isso de acordo com o número de menus criados.
Quando o usuário é cadastrado, o administradro marca os checks qu epossuem a inscrição do que ele pode acessar, ou desmarca o que não pode. Isso fica gravado na tabela.
Quando o usuário loga, o sistema precisa reconhecê-lo para autenticá-lo e, nesta verificação, o sistema habilita os menus de acordo com as permissões condecidas.
É mais ou menos assim: o menu financeiro só habilita se a coluna p4 do usuário for iguala a 1, senão fica desabilitada.
Para isso você deve criar uma função, senão vai encher de if, then e else.
Valew;
amigo desculpa se meter assim na sua resposta, mais teria como enviar um exemplo que como você fez?? estou tentando implementar no meu sistema exatamente isso mais até agora o máximo que consigo é cadastrar os menus dentra da tabela dinamicamente... desde já agradeço amigo! :wink:
GOSTEI 0
Rjun
12/09/2007
A minha dúvida está no seguinte: tenho 3 tabelas: DIREITO, USUARIO e LINKUSUARIODIREITO.
Na tabela que faz a ligação está o código do usuário, código do direito e um campo que indica se o usuário tem ou não direito. Alguem faz algo parecido com isso? Imagine que alguem consiga acesso a tabela e altere o valor das permissões. Isso com certeza não seria bom. Criptografar um campo que indica TRUE ou FALSE também não parece ser muito eficiente. Qual seria o caminho?
Na tabela que faz a ligação está o código do usuário, código do direito e um campo que indica se o usuário tem ou não direito. Alguem faz algo parecido com isso? Imagine que alguem consiga acesso a tabela e altere o valor das permissões. Isso com certeza não seria bom. Criptografar um campo que indica TRUE ou FALSE também não parece ser muito eficiente. Qual seria o caminho?
GOSTEI 0
Paulo
12/09/2007
RJun, na tabela Usuario, voce vai gravar o nome e a senha do usu. Nesta tabela, eu usaria criptografia, pois o usu só será validado com o login e a senha, então se alguem alterasse na mão, teria problemas para criptografar, pois ele precisaria conhecer o algoritmo criptográfico. Depois, em outra tabela, você guardaria os menus. Cada menu terá um ID e na outra tabela(chamaria de conta ou algo parecido), voce teria o ID do usu e o ID do menu(permissão). No momento da validação a sua query iria ver na tabela de usu se aquele usu existe com aquela senha e na tabela conta verificar que nível ou permissão ele teria, para buscar na tabela menu os menus a que ele teria direito. Vale para menus suspensos ou mesmo para TreeView.
GOSTEI 0
Rjun
12/09/2007
Na verdade, o que quero não sao direitos para ´Menu´. Imagine por exemplo um PDV. E tem a função de Suprimento. Antes de chamar o método de suprimento, devo verificar se o usuário tem direito. Se não tem uma tela pedindo um usuário e senha de alguem que tenha direito é exibida. O problema é a tabela de direito. Ela tem o código do usuario, código do direito e o estado desse direito.
O problema é que se algum usuário tenha acesso a essa tabela, ele pode modiciar o valor da coluna Estado. Criptografar essa coluna não parece ser uma boa ideia, pois seria fácil descriptografar.
Estou utilizando SQL Server e normalmente os clientes tem a senha do SA do banco.
IdUsuario IdDireito Estado 0001 0001 1
O problema é que se algum usuário tenha acesso a essa tabela, ele pode modiciar o valor da coluna Estado. Criptografar essa coluna não parece ser uma boa ideia, pois seria fácil descriptografar.
Estou utilizando SQL Server e normalmente os clientes tem a senha do SA do banco.
GOSTEI 0
Rjun
12/09/2007
up
GOSTEI 0
Rodolfo.pirolo
12/09/2007
Rogerio,
Para resolver este problema estou utilizando o componente User Control.
Já deve ter ouvido falar dele.
www.usercontrol.net
Rodolfo
Para resolver este problema estou utilizando o componente User Control.
Já deve ter ouvido falar dele.
www.usercontrol.net
Rodolfo
GOSTEI 0
Paullsoftware
12/09/2007
Rogerio,
Para resolver este problema estou utilizando o componente User Control.
Já deve ter ouvido falar dele.
www.usercontrol.net
Rodolfo
não acho legal ficar dependendo de componentes de terceiros...GOSTEI 0
Brjedi
12/09/2007
Você pode estudar o componente e pegar as idéias.
´Na informática nada se cria, tudo se copia´
[]s,
´Na informática nada se cria, tudo se copia´
[]s,
GOSTEI 0
Delphi32
12/09/2007
Rjun, eu desenvolvi o meu código baseado no código do UserControl.
Na tabela de direitos eu gravo apenas o que o usuário pode fazer. Quer dizer, o que o usuário não pode fazer eu não gravo na tabela.
Nessa tabela, assim como você, tenho o campo código do usuário, código do que está sendo permitido e mais uma chave criptográfica. Essa chave criptográfica é que valida se o usuário tem realmente acesso àquela opção ou se a tabela foi modificada. Para gerar a chave eu não pego simplesmente um True ou False. A chave é gerada em cima de uma string composta por vários códigos. Por exemplo: no campo da chave você pode gravar o hash md5 da seguinte string:
CODIGO_DO_USUARIO+CODIGO_PERMISSAO. Dessa forma, o usuário até pode mudar o campo código de usuário para o código dele, mas a chave não vai bater. E como eu só tenho na tabela o que ele pode fazer, fica tudo certo. Qualquer coisa, posta aí. Tô voltando hoje ao fórum...
t+!
Na tabela de direitos eu gravo apenas o que o usuário pode fazer. Quer dizer, o que o usuário não pode fazer eu não gravo na tabela.
Nessa tabela, assim como você, tenho o campo código do usuário, código do que está sendo permitido e mais uma chave criptográfica. Essa chave criptográfica é que valida se o usuário tem realmente acesso àquela opção ou se a tabela foi modificada. Para gerar a chave eu não pego simplesmente um True ou False. A chave é gerada em cima de uma string composta por vários códigos. Por exemplo: no campo da chave você pode gravar o hash md5 da seguinte string:
CODIGO_DO_USUARIO+CODIGO_PERMISSAO. Dessa forma, o usuário até pode mudar o campo código de usuário para o código dele, mas a chave não vai bater. E como eu só tenho na tabela o que ele pode fazer, fica tudo certo. Qualquer coisa, posta aí. Tô voltando hoje ao fórum...
t+!
GOSTEI 0
Delphi32
12/09/2007
nossa.... desculpem por levantar esse ´defunto´...
mas achei o tópico no pesquisar e achei que estava vendo o índice do fórum... pelo tempo você até já resolveu o problema, não é?
t+!
mas achei o tópico no pesquisar e achei que estava vendo o índice do fórum... pelo tempo você até já resolveu o problema, não é?
t+!
GOSTEI 0