Controlando Aplicação?

20 respostas
J

Saudações.

Estou criando um sistema com NetBeans, mas quero fazer um esquema de segurança para os formulários baseado em usuários.
Ex:
Form = Cliente
Usuario1 = Insere, Atualiza, Delete e Consulta
Usuario2 = Insere, Atualiza, Consulta

E por ai vai.

Quero fazer esse esquema de uma maneira simples e que funcione bem, e ainda que não me de dor-de-cabeça futuramente.
Gostaria de saber se alguém aqui tem um mecanismo como esse funcionando, e ainda se tem como mantém a persistência disso ?

Conversei com alguns amigos, alguns me disseram para fazer pelo banco outros disseram para fazer pela própria aplicação.
Qual é o mais trabalhoso e mais sujeito a erros ? E pq ?

20 Respostas

andredeividi

Ola
no sistema que eu trabalho tem os 2 BD e Sistema.

tenho o cadastro do usuarios e suas devidas restrições

quando o usuario loga no sistema eu verifico o id do usuario e jogo em uma variavel onde todo o sistema faz a leitura disso.

Na parte do sistema eu tenho componente proprios que fazem a leitura do valor da variavel e verificam no sistema o que ele pode fazer nessa tela, sendo assim oque retornar da base para esse meu objeto ele automaticamente se deifine.

tenho um id para cada tela, e para cada usuario
e armazendo isso em um outra tabela que deifne o nivel de acesso.

exemplo:

Usuario 1 nivel 3 na tela 1

3 grava, edita, remove,

usuario 2 nivel 2 na tela 1

2 grava, e edita.

assim vai.

Espero ter ajudado.

ph_ms

defina sua política de controle de acesso…
crie um cadastro de usuários e grupos de usuários…
e controle os acessos a seus formulários… menus… enfim…

J

Opa andredeividi

Kra, gostei desse esquema ae heinnn, quando você fala: “Cadastro de usuários e suas devidas restrições”, quer dizer que você coloca as permissões para ele na tabela ?

Verificar o Id do usuário e coloca-lo em uma variavel que o sistema todo lê, é legal. É como se fosse uma session de web ?

Sobre os niveis de acesso, onde vc verifica Grava, Edita, Remove. Como você faz os testes de acesso conforme o retorno do SELECT para o formulario ?

andredeividi

Estou descrevendo sobre um sistema desktop, web num manjo muito naum!!!
Sim tenho as tabelas usuarios,permissoes,telas

na tabela permissoes

fica assim

codigo cd_usu cd_tela nv_permissao
0 1 1 3

  • ou - isso.

eu tenho uma tela de acesso administrador que deifne esse cadastro.

toda vez que abro uma tela a consulta de acesso e feita e a tela se deifine
conforme o retonor da base.

Espero ter esclarecido.

abraço

J

Sim sim, é um sistema desktop que estou fazendo tbm. Me referi a um sistema web pq tenho mais experiencia nisso, e nele usa-mos sessions para controlar as coisas, é como o esquema que tu flw de criar uma variavel global que recebe esses valores.

Mas uma dúvida que estou tendo é como você controla isso na aplicação, usando “if, switch” sei la o que saca ? Para cada form.

Ex.
usuario1 = insere, deleta, atualiza, consulta
usuario2 = insere, deleta, atualiza

if (usuario == 001 and tela == Cadastro Cliente and nivel == 03){

Usuario pode inserir, deletar, atualizar e consultar

}

else if (usuario == 002){

etc…

}

else {

e por ai vai

}

Saca ?

Eu achei esse metodo de controle que você criou bem legal, e me parece o mais fácil de se fazer. Mas ainda estou com algumas duvidas quanto ao modelo UML que estou fazendo.

andredeividi

Eu tenho um grupo de botoes proprios que acessam metodos
da minha classe como reflection.

sendo assim nesse botoes na hora em que a tela inicia
contrutor eu passo os valores do tipo id da tela, id do usuario.

comprende.

barra de botoes com

NOVO
EDITAR
REMOVER
PROCURAR

é uma classe com panel e os botoes
nesta classe eu tenho meu metodos prontos para manipular
oque eu quizer.

abraço

J

Não entendi muito bem não, mas vou ver se consigo fazer algo nesse esquema.

vlw.

andredeividi

eu tenho uma classe botoes

quando eu preciso dela eu instancio ela na minha “tela”

essa minha classe ja “sabe” quais metodos ela vai controlar na minha tela.

exemplo

o botão novo quando ele é acionado pela 1 vez ele muda para
gravar e na segunda vez ele acessa o metodo gravar da minha “tela”.

espero ter ficado mais claro.

abraço

J

Você tem a tabela permissões que é onde as guarda, qual a política de permissões que você criou e como você trata essas políticas na sua aplicação por nível ?

Ex:
Usuario1 com Nivel1 pode: Insert, Delete, Update, Select
Usuario2 com Nivel2 pode: Insert, Update, Select
Usuario3 com Nivel3 pode: Insert, Select

andredeividi

Isso mesmo!!!

Ex:
Usuario1 com Nivel1 pode: Insert, Delete, Update, Select
Usuario2 com Nivel2 pode: Insert, Update, Select
Usuario3 com Nivel3 pode: Insert, Select

Abraço

J

Sobre os seus “botoes”, você coloca todos com o mesmo nome ?
No netbeans estou tentando fazer isso ele da erro.

andredeividi

A minha classe botoes

public class botoes extends javax.swing.JPanel {

Eu tb uso o netbeans, faça assim

1 new/ file / gui forms/ jpanel form

2 dentro coloque os botoes que vc precisa

3 compile essa classe.

eu constumo adicionar esse tipo de classe como se fosse componentes para
eu arrastar para dentro da minha aplicação.

para fazer isso vc tem que

1 va na pasta onde esta os .class da sua classe.

2 crie um txt e coloque dentro esse codigo
jar -cf botoes.jar *.Class

3 renomei seu .txt para ponto bat.

4 execute dentro da pasta onde esta seus . class .

agora ele deve ter criado um pacote .jar.

Vamos ao netBeans

1 clique com o direto em palete
2 va em palete mananger
3 add from jar.
4 acione o jar que vc crio nos passos anteriores
5 selecione em qual palete vai ficar eu componente.

pronto agora sua classe botoes esta dentro do netbeans para ser usada.

lembrando que esse jar vai ser um api do seu projeto.

espero ter ajudado.

J

Opa eu ja havia dado uma olhada nesse esquema aqui nesse link:
http://www.netbeans.org/download/flash/why-netbeans-part1/player.html

Achei fantastico isso. Mas uma dúvida que estou tendo é se eu criar esse esquema com os nomes do botões e metodos de validação etc…Sempre que fizer uma modificação eu preciso recompilar a classe e ela ja estara atualizada na paleta do swing ?

andredeividi

no meu caso, essas classe estão no meu frameWork
toda vez que tenho mencher em alguma coisa nesse pacote eu tenho que atualizar no meu projeto.

abraço

J

Opa. Descobri como funciona, na verdade eu preciso remover o componente que ja esta no meu JFrame e arrasta-lo novamente.

E isso ?

andredeividi

Pense no libs da sua aplicação.
no meu projeto eu tenho tudo separado.

eu tenho um (lib .jar api ) que tem a minha classe botoes.

quando eu preciso alterar alguma coisa dessa classe botoes eu abro meu projeto de com a classe botoes e e faço as minha modificações
compilo e empacoto e substituo a lib antiga do meu projeto principal pela lib que acabei de autualizar.

compreende. sempresisar mexer nas telas.

J

Como em um FrameWork ?

E uma outra dúvida que estou tendo, é depois de criar esse esquema dos botões, como eu posso criar um metodo para cada form ?

andredeividi

HUmm para explicar assim fica meio complicado.
eu crio um projeto com as minha classe utilitarias,outro projeto
como minhas classes de tela como as do botoes.

todos esse projetos compilados gera um jar correto?

Pois bem esses jars. eu adiciono no meu projeto como libs.
compreende?

e para seus botoes acessarem metodos da sua classe tela vc tem
estudar sobre refletion.

public static Object obj;\\ minha tela
  Method grava= obj.getClass().getMethod( "gravadados", new Class[0] );// gravadados e metodo dentro da minha tela
                    navega.invoke(obj,null);

espero que ajude.

J

O esquema de refletion e esse aqui ?: http://www.guj.com.br/java.tutorial.artigo.10.1.guj

andredeividi

Isso mesmo!!!

Criado 21 de maio de 2007
Ultima resposta 23 de mai. de 2007
Respostas 20
Participantes 3