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.
De uma olhada na documentacao do JSP, sobre authentication and authorization, em Realms, se não me engano…
woquiton
???
??
?
D
dsrmf
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.
G
Green_Beret
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.
woquiton
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
G
Green_Beret
woquiton
[color="red"]-> Criando uma variável de sessão[/color]
session.setAttribute("Nome_Variavel", "Valor_Variavel");Ps.: Nome_Variavel é o nome que você querdar a sua váriável;Valor_Variavelévalorqueestávariávelvaireceber,lembrandosemprequedeveserumvalorString
[color="red"]-> Validando a variável de sessão[/color]
if(session.getAttribute("Nome_Variavel") == null){}Ps.: Está condicional questiona se a variável foi criada ou não
[color="red"]-> Para recuperar o valor que está contido na variável de sessão[/color]
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
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 .
G
Green_Beret
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
R
Rafael_Rossignol
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?