Boa tarde pessoal!
Seguinte. Estou criando um sistema CRUD usando JAAS, JBoss e JSF. E o estranho é … quando eu crio um link para um página “protegida” pelo JAAS usando a tag commandLink do JSF, o navegador direciona diretamente para a página mesmo eu não estando logado como administrador nem nada. Tipo o JAAS nem fez a autenticação. Já quando uso o link comum <a href… ele manda pra autenticação. A pergunta é … o JAAS se comporta assim mesmo, ou tem alguma coisa errada?
Obrigado!
<h:commandLink action="/pages/protected/admin/admin.xhtml" value="Para administrador" />
<a href="/agendaPro/pages/protected/admin/admin.xhtml">Para administrador link comum</a>
[quote=kira911]Boa tarde pessoal!
Seguinte. Estou criando um sistema CRUD usando JAAS, JBoss e JSF. E o estranho é … quando eu crio um link para um página “protegida” pelo JAAS usando a tag commandLink do JSF, o navegador direciona diretamente para a página mesmo eu não estando logado como administrador nem nada. Tipo o JAAS nem fez a autenticação. Já quando uso o link comum <a href… ele manda pra autenticação. A pergunta é … o JAAS se comporta assim mesmo, ou tem alguma coisa errada?
Obrigado!
<h:commandLink action="/pages/protected/admin/admin.xhtml" value="Para administrador" />
<a href="/agendaPro/pages/protected/admin/admin.xhtml">Para administrador link comum</a>
[/quote]O commandLink usa post. Por isso que você consegue entrar na página inicial. Tente navegar para outra página e você vai ver que ele te manda para a tela de login.
O que você pode fazer é no commandLink chamar um redirect. Ou então você pode utilizar o outputLink (eu acho).
[quote=jakefrog][quote=kira911]Boa tarde pessoal!
Seguinte. Estou criando um sistema CRUD usando JAAS, JBoss e JSF. E o estranho é … quando eu crio um link para um página “protegida” pelo JAAS usando a tag commandLink do JSF, o navegador direciona diretamente para a página mesmo eu não estando logado como administrador nem nada. Tipo o JAAS nem fez a autenticação. Já quando uso o link comum <a href… ele manda pra autenticação. A pergunta é … o JAAS se comporta assim mesmo, ou tem alguma coisa errada?
Obrigado!
<h:commandLink action="/pages/protected/admin/admin.xhtml" value="Para administrador" />
<a href="/agendaPro/pages/protected/admin/admin.xhtml">Para administrador link comum</a>
[/quote]O commandLink usa post. Por isso que você consegue entrar na página inicial. Tente navegar para outra página e você vai ver que ele te manda para a tela de login.
O que você pode fazer é no commandLink chamar um redirect. Ou então você pode utilizar o outputLink (eu acho).[/quote]
Grande Jakefrog!!
Mas cara, só pelo fato do commandLink usar post ele consegue “burlar” o JAAS???
Ele não burla, repare no seu browser que a URL fica sendo a url anterior e não a URL nova.
Ele não atualiza a URL do browser por isso que o JAAS não trava. [=
Agora caso você tente ir direto para a URL aí sim o JAAS entra de avuadora. [=
A soh entendi!
Velhinho mais uma vez muito obrigado.
Vou dar uma pesquisada nesse redirect!
Só para avisar, com o redirect ficou perfeito!
Obrigado!
[quote=kira911]Só para avisar, com o redirect ficou perfeito!
Obrigado![/quote]\o/
Como diriam lá em minas… BAAAAAAAAAAAAAAUUUM!
Coloca o código aí para caso alguém procure depois veja o resultado. [=
Opa ta na mão! E quanto à qualquer má prática do JSF nessa página me desculpem, estou começando agora =)
Mas já que o código está aí, me diz ai jakefrog. Tem alguma coisa errada aí nessa pequena página? Algo que eu deveria mudar para fazer uso de uma melhor prática quanto ao JSF?
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:composite="http://java.sun.com/jsf/composite">
<head>
<title>Gerenciador de Contatos :: Home</title>
</head>
<h:body>
Bem vindo ao gerenciador de contatos!<br />
<h:form>
<h:commandLink action="/pages/public/login.xhtml" value="Fazer Login" />
<br />
<h:commandLink action="/pages/protected/admin/admin.xhtml?faces-redirect=true" value="Para administrador" />
<br />
<h:commandLink action="/pages/protected/user/user.xhtml?faces-redirect=true" value="Para usuario" />
<br />
<h:commandLink action="#{loginMB.logout}" value="Logout" />
</h:form>
</h:body>
</html>
[quote=kira911]
Mas cara, só pelo fato do commandLink usar post ele consegue “burlar” o JAAS??? [/quote]
Primeiramente, que bom que o problema foi resolvido ![:slight_smile: :slight_smile:](//www.guj.com.br/images/emoji/twitter/slight_smile.png?v=6)
Agora só para ficar claro: o acesso pelo commandLink não passou pelo fato de usar post, e sim pela mudança de página ser feita por forward.
Assim:
Você está na página A (que tem acesso permitido), e ela tem um commandLink para a página B (acesso não permitido).
Quando clica no link, é feito um post para a url da página A, e o acesso é autorizado. Somente durante o processamento da requisição - mais especificamente, depois de executar a Action do link e pegar seu retorno - é que ocorre o forward para a página B, internamente. Nesse ponto não existe uma nova validação, e a página B é renderizada com sucesso.
Com redirect isso não acontece, visto que o browser faz uma nova requisição diretamente para a página B.
[quote=gomesrod][quote=kira911]
Mas cara, só pelo fato do commandLink usar post ele consegue “burlar” o JAAS??? [/quote]
Primeiramente, que bom que o problema foi resolvido ![:slight_smile: :slight_smile:](//www.guj.com.br/images/emoji/twitter/slight_smile.png?v=6)
Agora só para ficar claro: o acesso pelo commandLink não passou pelo fato de usar post, e sim pela mudança de página ser feita por forward.
Assim:
Você está na página A (que tem acesso permitido), e ela tem um commandLink para a página B (acesso não permitido).
Quando clica no link, é feito um post para a url da página A, e o acesso é autorizado. Somente durante o processamento da requisição - mais especificamente, depois de executar a Action do link e pegar seu retorno - é que ocorre o forward para a página B, internamente. Nesse ponto não existe uma nova validação, e a página B é renderizada com sucesso.
Com redirect isso não acontece, visto que o browser faz uma nova requisição diretamente para a página B.[/quote]
Opa, clareou mais ainda. Muito obrigado!!!
E jakefrog, podexa que vou mudar isso parceiro!