Autenticação e nivel de acesso com Struts

24 respostas
daanylo

Tenho uma aplicação onde preciso fazer a autenticação do usuario de diferentes niveis de acesso. Estou utilizando Struts, gostaria de saber se existe alguma ferramenta do Struts que facilite essa parte de autenticação e niveis de usuarios, ou se existe alguma API que se integre ao struts no auxilio dessa funcionalidade, já vi varios exeplos no forum sobre “intercepting filters” mas nenhum utilizados com struts. Agradeço se alguem puder me ajudar e se possivel postar algum exemplo ou tutorial.

[]s
Danilo

24 Respostas

MarcoParanhos

Bom, não entendi muito bem o que você quer com struts sobre autenticação em níveis de acesso diferentes.
Deixe-me ver se entendi algo, você quer que o usuário, senha e nível seja armazenado em um XML, seria isso ?
Bom eu tenho um exemplo que fiz para um Sistema de Controle de Laboratório para o Duty Free, lá eu tenho usuários com níveis de acessos diferentes, tipo: Admin, Técnico, Supervisor.
Sendo que os dados da cada usuário estão em um BD. Porém você pode fazer alguma validação no Struts, né.
Explica com mais detalhes para eu entender.

Abs

daanylo

Então MarcoParanhos, minha aplicação talvez seja semelhante a sua e meus dados do usuario estao numa BD inclusive seu nivel : “amin, tecnico”. Entao minha duvida é quanto essas validações, porque por exemplo o admin terá permissões e funcionalidades que o tecnico não tem, e minha dificuldade é filtrar essas funcionalidade para os dois de forma que seja permitido pra um e para o outro não, como o struts faz esse filtro ele tem uma classe pronta para isso? Desculpa a ignorancia, pois sou iniciante no struts… Se vc puder disponibilizar seu codigo eu agradeço tambem.

Obs: Breve descrição da minha aplicação.
Para um melhor intendimento, a minha aplicação será uma comunidade virtual, onde terá artigos, forum, grupos, etc. Minha maior dificuldade está sendo no login de usuarios de diferentes niveis (onde os dados estão todos armazenados numa BD), por exemplo: o administrador da comunidade terá funcionalidades como bloquear algum usuario, que um usuario normal ou apenas um visitante da home page nao terá, como eu faria esse filtro onde que dependendo do nivel de usuario abriria de forma dinamica a pagina com as funcionalidades de seu respectivo nivel

[]s
Danilo

MarcoParanhos

Cara, agora que verifiquei sua resposta, tô de saída no trabalho.
Mas amanhã pela manhã vou postar aqui um exemplo de como eu fiz para você seguir. Bom no Struts acredito que não há como fazer esta separação por autenticação como você quer, mesmo também que não seria uma forma mais segura, acho.
O que eu fiz foi por exemplo, em cada início de uma JSP ou Servlet, eu coloquei uma instrução para verificar o nível de acesso, ex: 1,2,3,…
Isso utilizando com variáveis booleanas para tornar mais fácil de implementar, mais segura também, lógico.
Amanhã eu continuo, um abraço.
Tem MSN ? Fico conectado no trabalho direto, somente as vezes é que não consigo.

mcruz

Acho que algum nível de segurança pode ser implementado utilizando-se os filtros da especificação servlet 2.3 (a q vc se referiu, acho) do seguinte modo:
Mapeia-se os paths dos elementos actions do struts-config para uma tabela do BD tipo “funcionalidade” e relaciona-se essa tabela com as tabelas de usuário e/ou grupo e então escreve-se uma classe que implemente um filtro para as requisições .do (padrão do struts) que capture o nome do recurso solicitado (myAction.do) e o id do usuário na sessão e então faça o check no banco contra a tabela que relacione as duas entidades. Se o usuário não possuir permissão, encaminhe-o para uma jsp onde exiba “Recurso Restrito”.
O importante é que todo o acesso às funcionalidades do sistema (hyperlinks e submits) seja por meio de actions (
.do).

O

Não importa o framework que está utilizando, sugiro que utilize JAAS ao invés de fazer macumbas de autenticação e autorização. :smiley:

http://www.jaasbook.com/

mcruz

Meu amigo, sua falta de educação com os colegas só não é maior que a sua ignorância. Por favor, não poste mais baboseiras como esta neste fórum :!:

cv1

Desculpas, mas onde ta a falta de educacao e ignorancia nessa thread? :shock:

mcruz

Acho que ninguém deve subestimar ou menosprezar as soluções apresentadas em qualquer post deste forum. A necessidade de cada um é que deve determinar o que usar… Se o tempo é crítico e não se pode perdê-lo lendo documentação em inglês sobre um framework (mesmo bom) não há nada de mais em implementar uma solução você mesmo que já se sabe mais ou menos como se fazer :!:

cv1

Concordo, mas se o tempo nao eh curto e da pra estudar implementacoes alternativas, nao vejo absolutamente nada de errado na sugestao do oandrade. As vezes, vale mais a pena achar a ferramenta correta e aprender a usa-la do que adaptar o conhecimento existente pra resolver um problema onde ele nao se encaixa tao bem.

O JAAS eh um dos padroes recomendados da J2EE e, apesar de nao ter tido muita experiencia com ele, posso recomendar numa boa a nao ser pros casos mais cabeludos ou arquiteturas mais esquisitas.

mcruz

Amigo, não quero estender a discussão sobre a necessidade do colega, a questão é que o tal de oandrade desrespeitou este forum e ponto final.

cv1

Amigo, nao – pra vc eh Senhor Moderador, daqui pra frente.

Se vc nao quer levar a conversa numa boa e entender que o oandrade nao cometeu nenhuma heresia, o botao ‘log out’ eh serventia da casa.

J

PQP !!

Agora vou meter o bedelho…

Sobre esse post:

Realmente o cara deu “cospé” mas bem que o mcruz poderia ser mais educado também.

Onde está falta de educação naquele post??

Pombas, qualquer crítica pra qualquer um de informática soa como arrogância ou ofensa.

A gente sempre pensa que sabe mais quando ajuda alguém ou sabe nada quando alguém nos ensisa. Sempre haverá os dois lados da moeda, ensinamos e aprendemos diariamente.

Então um pouco de humildade e paciência não faz mal a ninguém.

Agora, se quiserem se degladiar mais um pouco por mim tudo bem, adoro essas discussões…

:smiley:

mcruz

Tudo bem, Sr. Modedor… não me referia a vc quando disse amigo, afinal, nem te conheço, seu zé ruela…

mcruz

Essa tua foto tah mais pra uma bichona quando vê uma mulher gostosa.

mcruz

Huahuahauhauahauahauahau :lol: :lol: :lol:

louds

Isso foi bem educado, eu diria. As pessoas são educadas assim com você no dia a dia?

Mas voltando ao assunto. Você pode fazer autenticação/autorização de várias formas. Usando um servlet filter ou o mecanismo que já vem embutido em todo container.

Se você precisar de algo beeeeem simples, recomendo usar o suporte do container pq normalmente significa apenas escrever a configuração necessária.

cv1

Me faz lembrar do quadrinho da Penny Arcade…

Fabricio_Cozer_Marti

ouxie …
mcruz, vc tem algum distúrbio ? Pois acho que deva procurar um médico psiquiatra.

O que o colega sugeriu foi a utilização do JAAS, mas foi mais uma sugestão além da sua, que também é muito utilizada e diria até mais apta a ser escolhida em aplicações onde existam muitas configurações particulares em relação ao controle de acesso.

Estudando o tipo de aplicação, Jaas pode servir, mas também não utilizaria em sistemas onde o escopo de validações são restritas e não requer mais que uma fonte de dados para autenticações e autorizações.

Um Servlet Filter mais seco pode ser bem mais viável que o JAAS.

saoj

Pra que isso amigo ? O CV gosta de mulher sim. Só não sei se mais do que Ruby…

O cara lá não foi mal educado não. Vc que entendeu errado…

Só tem maluco nesse fórum… Incluindo eu…

E se for maluco (no mal sentido) então vc deve usar JAAS…

Sou moderador tb, mas pode me chamar de brothex…

Mas para com essas bobeiras de sacanear os avatares dos outros…

:lol:

louds

saoj:

Pra que isso amigo ? O CV gosta de mulher sim. Só não sei se mais do que Ruby…

:lol:

Boa Sergio. :lol: O rolo do CV com mulheres é que elas todas amam diamantes.

cv1

Se eh o que vc diz… :wink:

rodrigoallemand

Que JAAS é bom, todo mundo sabe…
Que o Struts dá o melhor suporte pra trabalhar com essa tecnologia (tendo em vista que nem a JSTL dá suporte a isso), todo mundo já sabe…
Que o pessoal está meio estressado, todo mundo já sabe…
Que o Brasil vai ser Hexa, todo mundo já sabe…

O que todo mundo quer saber é qual será a punição deste meliante que acha que pode falar o que quer, com quem quizer…
Isso é uma comunidade feita pra ajudar a qualquer tipo de duvida, seja esta iniciante ou avançada, seja profissional ou pessoal.
E pré-requisito para estar em qualquer tipo de comunidade é TER EDUCAÇÃO!!! E isso, Srs, o Sr. em questão provou que não tem…

E tenho dito!

O

Senhores,

Enquanto realizava uma pesquisa em meus antigos posts, me deparei com este e fiquei bastante surpreso pelos comentários relacionados a mim que por alguma razão, na época, não tive conhecimento. Sendo assim decidi postar uma nova mensagem para registrar.

Com relação ao meu comentário a respeito de JAAS, fui bastante simples e objetivo de acordo com o meu conhecimento. Embora possa ter parecido um comentário hostil para algumas pessoas, posso afirmar que o objetivo era de iniciar uma discussão (saudável) de modo a proporcionar que nosso colega pudesse optar qual a melhor alternativa para o projeto em questão.

Entretanto, pelo que parece, nosso colega mcruz não conseguiu exercer a competência do desprendimento, misturou os centros e apelou para o emocional.

Para finalizar, gostaria de citar a seguinte frase:

Não tente ensinar um porco a dançar, você perderá o seu tempo e o porco ficará aborrecido

:smiley:

Forte abraço,

Lenin666

E ae galerinha, blz?!

Então, como deu pano pra manga esse tópico, minha nossa…hehe.

Olha, com toda humildade do mundo, acho que posso ajudar: Eu lí a java magazine desse mês, e lá fala sobre um método de autenticação por Spring e eu acho que pode te ajudar. Pelo que eu lí, parece simples, pena que eu não estou com a revista em mãos pra poder detalhar, mas lá tem algo que se parece bem com oque vc está procurando.

Como o JAAS, o spring tb consegue te fornecer um meio de autenticação legal, e simples de entender. Não sei se ainda dá tempo, mas talvez, deva existir alguma revista em alguma banca, e se der sorte, c compra e dá um look. É bem facinho de entender e de implementar.

Abs!

Criado 31 de maio de 2006
Ultima resposta 6 de jul. de 2009
Respostas 24
Participantes 11