JAAS - Redirecionar para mesma tela

5 respostas
marciojlre

Pessoal, eu andei lendo varios tutoriais sobre jaas e não consegui achar nada sobre ao logar ele redirecionar para mesma pagina.
Sempre que faço o login ele me redireciona para a tela raiz do projeto… no caso a home.

Estou utilizando JSF2 com glassfish V3.

Segue a forma que configurei o JAAS.

Web.xml

<login-config> <auth-method>FORM</auth-method> <realm-name>myRealm</realm-name> <form-login-config> <form-login-page>/login.jsf</form-login-page> <form-error-page>/erro.jsf</form-error-page> </form-login-config> </login-config>

login.xhtml

<form method="POST" action="j_security_check">  
     Usuário: <input type="text" name="j_username" size="15"><br>  
     Senha: <input type="password" name="j_password" maxlength="20" size="15">  
</form>

Ja estou quase achando que não tem como voltar pra mesma tela com JAAS :?

Se alguem puder me ajuda eu fico grato.

5 Respostas

dev.rafael

Kra, eu vou testar e te mando a resposta, mas te adianto q, segundo a documentação, após o login bem sucedido o JAAS devia redirecionar o usuário p/ a página originalmente requisitada.

marciojlre

Ok, dev.rafael… valew

Ah e quando faço o login acontece isso:
1º a url ta assim http://site.com/detalhe.jsf
depois do login fica assim:
http://site.com/Site-Web/

E meu form de login esta no top de todas as paginas.

Abraços

dev.rafael

Como eu disse, o comportamento padrão é q o servidor redirecione p/ a página q o usuário originalmente requisitou após um login bem sucedido. Se o isso ñ está acontecendo então alguma coisa pode estar errada com as suas configurações, páginas ou servidor. Posta ai o código dos arquivos web.xml e do deployment descriptor do servidor, o servidor q vc está utilizando e o código da página q está com problemas.

marciojlre

hum…
Segue todo web.xml

&#65279;<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <filter>
    <filter-name>Pretty Filter</filter-name>
    <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>Pretty Filter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ERROR</dispatcher>
  </filter-mapping>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
  <filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class> org.primefaces.webapp.filter.FileUploadFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
  </filter-mapping>
  <session-config>
    <session-timeout>30</session-timeout>
  </session-config>
  <welcome-file-list>
    <welcome-file>faces/draganddrop.xhtml</welcome-file>
  </welcome-file-list>
  <context-param>
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
  </context-param> 

  <context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>resources.application</param-value>
  </context-param>
  <listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
  </listener>
  
  
  <!-- JAAS -->
  <login-config>
    <auth-method>FORM</auth-method>
    <realm-name>siteRealm</realm-name>
    <form-login-config>
      <form-login-page>/</form-login-page>
      <form-error-page>/error_permission.jsf?fail</form-error-page>
    </form-login-config>
  </login-config>

  <security-constraint>
    <web-resource-collection>
      <web-resource-name>paginas admnistrativas</web-resource-name>
      <url-pattern>/meu_site/*</url-pattern>
      <http-method>GET</http-method>
      <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
      <role-name>logado-role</role-name>
    </auth-constraint>
  </security-constraint>
  
  <error-page>
    <error-code>403</error-code>
    <location>/error_permission.jsf</location>
  </error-page>
   <!-- /JAAS -->
  
  
  <servlet>
    <description></description>
    <display-name>CreateIndexServlet</display-name>
    <servlet-name>CreateIndexServlet</servlet-name>
    <servlet-class>br.com.site.servlet.CreateIndexServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CreateIndexServlet</servlet-name>
    <url-pattern>/CreateIndexServlet</url-pattern>
  </servlet-mapping>

  <servlet>
    <description></description>
    <display-name>FacebookCallbackServlet</display-name>
    <servlet-name>FacebookCallbackServlet</servlet-name>
    <servlet-class>br.com.site.servlet.FacebookCallbackServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>FacebookCallbackServlet</servlet-name>
    <url-pattern>/FacebookCallbackServlet</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>GoogleCallbackServlet</display-name>
    <servlet-name>GoogleCallbackServlet</servlet-name>
    <servlet-class>br.com.site.servlet.GoogleCallbackServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>GoogleCallbackServlet</servlet-name>
    <url-pattern>/GoogleAuth.jsf</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>TwitterCallbackServlet</display-name>
    <servlet-name>TwitterCallbackServlet</servlet-name>
    <servlet-class>br.com.site.servlet.TwitterCallbackServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TwitterCallbackServlet</servlet-name>
    <url-pattern>/TwitterServlet/</url-pattern>
  </servlet-mapping>
 
	
	<filter-mapping>
	         <filter-name>extensionsFilter</filter-name>
	         <url-pattern>*.jsf</url-pattern>
	</filter-mapping>
</web-app>

sun-web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd">
<sun-web-app error-url="">
<context-root>/</context-root> 
 <security-role-mapping>
  <role-name>logado-role</role-name>
  <group-name>Proprietário</group-name>
  <group-name>Administrador</group-name>
 </security-role-mapping>

  <class-loader delegate="true"/>
  <jsp-config>
    <property name="keepgenerated" value="true">
      <description>Keep a copy of the generated servlet class java code.</description>
    </property>
  </jsp-config>
</sun-web-app>

O form da pagina está exatamente como eu postei anteriormente. Sendo que este se encontra dentro de um include(TOP) que vai em todas as paginas.

A configuração no servidor Glassfish é:

Criei um Realm do tipo jdbcRealm.
JNDI: jdbc/banco
O resto das configs do server estão normal não tem nada demais. Só o Atribuir Grupos que está em branco.

Obrigado

dev.rafael

Kra eu nunca mexi com o PrettyFaces e realmente ñ sei q implicações isso terá na aplicação. Eu ñ posso te responder isso agora mas quando encerrar o meu expediente eu faço uns testes p/ ver se descubro a origem do problema.

Criado 13 de outubro de 2010
Ultima resposta 14 de out. de 2010
Respostas 5
Participantes 2