Controle de Acesso em JSP para Sistemas em JSP

Bom dia Pessoal,

Estou precisando fazer um controle de acesso, em JSP, que controle páginas JSP… onde eu crie os usuários e informe quais as aplicações, páginas, links, ele tem acesso. Isso por que há hirarquicamente a necessidade de diferenciar os usuários.

Alguém já fez algo parecido? Como vocês mais experientes fazem esse controle de acesso. Quando mais simples melhor, por que ainda tenho poucos conhecimentos na linguagem.

Eu pensei, em criar 3 tabelas (usuarios, aplicação e acesso) … mas de link em link tenho que verificar se o usuário tem acesso e vou no banco de dados verificar isso, e isso compromete a velocidade.

Qualquer ajuda é bem vinda.

Obrigado

Woquiton

De uma olhada na documentacao do JSP, sobre authentication and authorization, em Realms, se não me engano…

???
??
?

Vc deve carregar todas as permissoes do usuario e armazenar na sessão e não ficar indo no banco de dados toda vez ,pois isso pode compremeter a performance da aplicação,utilize filtros para validar ou não se o usuario tem acesso a determinada pagina.

woquiton

Crie uma tabela que contenha usuário, aplicação, tipo de acesso e as permições desta aplicação caso exista as funções Insert, Update e Delete. E assim como o dsrmf você cria as variáveis de sessão que irão armazenar as permições que este usuário possue.

Ps.: Se não tiver sido claro, me responda que te mostro um exemplo.

oi Pessoal

Achei a ideia de todo mundo legal… era isso mesmo. Só nao sei como armazenar numa sessao… e depois usar e comparar o que tiver nela contido? como faria isso?

Obriagado

Woquiton

woquiton

[color=“red”]-> Criando uma variável de sessão[/color]

[code]session.setAttribute("Nome_Variavel", "Valor_Variavel");

Ps.: Nome_Variavel é o nome que você querdar a sua váriável;
Valor_Variavel é valor que está variável vai receber, lembrando sempre que deve ser um valor String[/code]

[color=“red”]-> Validando a variável de sessão[/color]

[code]if (session.getAttribute("Nome_Variavel") == null){
}

Ps.: Está condicional questiona se a variável foi criada ou não[/code]

[color=“red”]-> Para recuperar o valor que está contido na variável de sessão[/color]

String Recebe_Valor = session.getAttribute("Nome_Variavel").toString();

Um abraço.

Seguinte… parece que na sessao assim dá certo mesmo…

Porém… um usuário que possui um MENU com 20 opções por exemplo… como vai ser criada os valores na sessão? e principalmente como eu vou recuperar os valores… por que assim…

se eu colocar dentro da variável de sessao: MENU1, MENU2, MENU3, MENU4 … como recupero depois pra comprarar?

Obrigado

Woquiton

Existe alguma forma, que após o usuário se logar e receber suas opçoes de menu (sessao válida)… ele nao consiga digitar em outra janela um outro link, que ele nao tenha acesso (http://localhost:8080/naotenhoaceesso.jsp .

woquiton

Quanto a sua primeira pergunta, cada campo do menu que você listar na tela você cria uma sessão com o nome do campo e com o atributo que você quiser. Exemplo:

for (int i=0; i<Retorno; i++){ session.setAttribute("Nome_Variavel", "Valor_Variavel"); }
Ou seja, serão criadas quantas sessões forem necessárias.

Para a segunda pergunta, você pode validar no inicio de cada tela se o usuário está logado ou não. Segue um exemplo de como fazemos aqui na empresa:

if (session.getAttribute("Login") == null){ response.sendRedirect("v_login?msg=Usuário, favor efetuar seu login."); } else{ if (session.getAttribute("Usuario_Logado") == null){ response.sendRedirect("v_login?msg=Usuário, favor efetuar seu login."); } else{ seu código é inserido dentro destas tag's. }

Faça um teste e caso não consiga me comunique que tentarei fazer uns testes aqui.

Um abraço

não entendi, a sessão é para cada usuário certo? então cada vez que uma pessoa abrir sessão vou ter que listar todas as permissões? não teria como eu manter essa lista na aplicação?

Depois que o usuário loga no sistema:

#if( session.get( 'permissoes' ).contains( 'menu admin'' )
<a href="/menuadmin.htm">Admin</a>
#end
#if( session.get( 'permissoes' ).contains( 'menu contabil'' )
<a href="/menucontabil.htm">Contabil</a>
#end

e dentro das páginas faça uma checagem simples de onde a requisição para a mesma veio.

Isso ajuda?

Pq nao usar Filtros para controlar os acesso aos JSP e Tag Libs para mostrar ou nao um componente na tela?