Boa tarde família!
Pessoal, alguém sabe me dizer como faço para implementar um login no topo do site com o spring security tipo o desse site aqui http://grooveshark.com/
Tentei, tentei e nothing. Estou utilizando o spring security e já consegui implementar o login utilizando uma página a parte com formulário (vide o código abaixo com o trecho do applicationContext.xml do spring security). Mas o que quero é que o login fique em uma página importada no topo de todas as páginas entenderam? =/
Estou utilizando jsf e hibernate nesse sistema também, se alguém tiver uma luz agradeço =]
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/protegido/*" access="hasRole('ROLE_USER')" />
<form-login login-page="login.jsf" authentication-failure-url="/login.jsf?erro=true" />
</http>
Até!!
Não entendi direito a dúvida… você consegue fazer o login em uma página separada mas quando inclui ela em outra não está funcionando?
Exatamente. Quando o formulário de login está em uma página (completa) como o código 1 abaixo dá certo. Só que o jeito que eu quero fazer é um import em todas as páginas tipo a do site http://grooveshark.com/ (aquela barra preta em cima que além de outras opções tem a de login) e desse jeito dá errado comigo a implementação da página à ser importada está no código 2.
Tipo … o usuário vai sempre ter a opção login lá em cima que será implementada utilizando jQuery(esqueci de falar isso =]) e à qualquer momento em qualquer página (de acesso livre) que o usuário clicar la no login, um dropDown feito em jquery mostrará os campos usuário e senha para o usuário preencher.
Entendeu?
Código 1
<html imports omitidos>
<h:body>
Implementação do formulário de login
</h:body>
</html>
Código 2
<ui:component xmlns:ui="http://java.sun.com/jsf/facelets"
restante de imports omitidos>
Implementação do formulário de login.
</ui:component>
Mas qual é o problema que tá dando? Ele não consegue rodar, ele não renderiza o componente… o que?
Ele não da erro nenhum, e no applicationContext.xml coloquei da forma abaixo. Onde contextoTopo.jsf é o import. Fiz um teste e acessando diretamente esse context do topo, ele consegue logar. Porém quando acesso ele via uma outra página que o contem ele não loga, nem da erro.
O que faz sentido, já que o spring security está esperando a url “/publico/importar/contextoTopo.jsf” para logar e não a do index.xhtml por exemplo. Só que eu realmente preciso fazer esse login no topo =/ … será que existe alguma maneira de enganar o spring security mascarando a url fingindo ser a do contextoTopo.jsf ou algo do tipo =/.
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/protegido/*" access="hasRole('ROLE_USER')" />
<form-login login-page="/publico/importar/contextoTopo.jsf" authentication-failure-url="/login.jsf?erro=true" />
</http>
Você tentou marcar como a index.xhtml? Porque no fim das contas ele não vai mesmo reconhecer o contextoTopo.jsf… na fase de renderização, tudo vai ser um HTML só.
Você também pode marcar como “/*” que ai não teria problema incluir de outras páginas também, de onde estivesse iria logar tranquilo.
[quote=diogozero]Você tentou marcar como a index.xhtml? Porque no fim das contas ele não vai mesmo reconhecer o contextoTopo.jsf… na fase de renderização, tudo vai ser um HTML só.
Você também pode marcar como “/" que ai não teria problema incluir de outras páginas também, de onde estivesse iria logar tranquilo.[/quote]
Sim para os dois. Quando coloquei o index.xhtml e tentei acessa-lo deu o erro 404 (página não encontrada). E quando coloquei o "/” também deu o mesmo erro =/
É infelizmentei não rolou, vou fazer com a página de login mesmo =/