Estou em um projeto que deve utilizar: Struts, Hibernate, MySQL…
Nesse projeto deve ser implementado a segurança com base em: Usuários, Grupos, e Permissões.
Exemplo de Grupos: SystemAdmin, Admin, Moderador, Usuario
Cada Grupo tem diversas permissões e cada usuário só pertence a um Grupo apenas.
Qual seria a melhor solução utilizando essas tecnologias para que uma Action ou um JSP possa identificar se o usuário tem permissão ou não para acessar tal página?
Você pode criar um módulo do sistema específico para isso, atrelando o usuário a ‘n’ grupos.(É o que normalmente uso)
Outra opção, dependendo da quantidade de usuários é uma base LDAP.
Ou mesmo se for algo trivial, controla nas roles do container mesmo.
[edit]
Relendo, creio que não entendi direito. Você já tem um controle de ‘roles’ implementado? Se sim, depende da implementação para ser acessado pela Action
the_negao
As Roles, os Users e Os Groups estão em Banco de Dados MySQL…
Por isso não posso usar as Roles pelo container!
Rafael_Nunes
E qual o problema dessas Actions consultar essa informação no banco?
the_negao
Tipo…
Usuário logando no sistema, eu já vou saber de qual grupo ele é…
Para verificar nas JSPs se ele é um Admin por exemplo é simples:
<logic:present name="user" scope="session">
<logic:equal name="user" property="administrator" value="true">
...
</logic:equal>
</logic:present>
Nas Action fazer o controle de roles dá para fazer… verificando se aquele group tem permissão para executar aquela action…
Agora, o problema maior é como verificar isso nas JSPs
Rafael_Nunes
E se você colocar na sessão as informações do usuário quando ele logar no sistema, tipo as roles que ele pertence?
keller
Uhmn , talvez poderia ser utilizado um filter ou nao?
the_negao
Acredito que não haveria problema algum, mas minha dúvida continua em saber…
the_negao
Verdade!
Mas ainda questiono… é a melhor solução com a utilização de Struts, MySQL e Hibernate?
Concordam? Assim dessa forma não preciso implementar a segurança de acesso nas JSPs, somente nas Actions mesmo.
Ps.: Para aqueles que desconhecem, é possível sim apontar o path das actions para dentro do WEB-INF.
Comentem por favor!
the_negao
Dando up!
:roll:
danieldestro
Ou então crie uma tag (taglib) que faça a verificação de segurança.
the_negao
Você recomenda algum livro (eBook) ou tutorial que ensine a criar taglib?
E com relação a colocar os .JPS dentro do WEB-INF e implementar a Authorization dentro das Actions seria uma boa? Não implementando dentro das .JSP…
keller
Esse livro ensina a criar taglibs.
Head First - JSP & Servlets
Sugestao use um Filter pegue o request
adicione um parametro nele tipo “visible” e mande
seguir em frente na view voce pode fazer a checagem
com <c:if test=“request.parameter.visible”> e mostrar
ou nao o campo… seila…
E se for fazer alguma checagem no Filter mesmo voce
pode redirecionar com o response para uma pagina
estilo “Ooops You Don’t Have Permission To Do That.”
Valeu? Até… :thumbup:
[]s
the_negao
Eu estou implementando através de Filtros… e o Filtro resolve meu problema!
Mas continua a minha dúvida e curiosidade…
Se eu colocar os .JSP dentro do WEB-INF eles estarão protegidos e não poderão ser acessos, a não ser seja através das Actions, confere?
Assim não preciso implementar nenhum código de Authorization dentro dos .JSP
Se alguém puder me responder isso, eu estou por satisfeito!
Agradeço…
kuchma
the_negao:
Se eu colocar os .JSP dentro do WEB-INF eles estarão protegidos e não poderão ser acessos, a não ser seja através das Actions, confere?
Assim não preciso implementar nenhum código de Authorization dentro dos .JSP
Se alguém puder me responder isso, eu estou por satisfeito!
Confere.
Marcio Kuchma
danieldestro
Faça o controle de acesso via Filter. Não fique espalhando código nas Actions.
Apostila sobre Java para web que mostra como criar taglibs: http://java.danieldestro.com.br