Especificar la página de login especifica para una página o grupo de páginas

Hasta ahora podiamos especificar la página de login de la aplicación mediante una expresión EL, ahora además, podemos especificar la página de login para una página concreta o grupo de páginas (wildcards, en el fichero pages.xml).

Para poder hacerlo, se ha añadido el atributo login-view-id en los elementos <page> que podemos configurar en los ficheros .page.xml o en el pages.xml. Ejemplo para una página concreta (ficheros .page.xml):

<?xml version="1.0" encoding="UTF-8"?>
<page xmlns="http://jboss.org/schema/seam/pages"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://jboss.org/schema/seam/pages http://jboss.org/schema/seam/pages-2.3.xsd"
      login-required="true" login-view-id="/login_especial.xhtml">
 
</page>

Ejemplo para una página concreta (ficheros .page.xml) con una expresion EL:

<?xml version="1.0" encoding="UTF-8"?>
<page xmlns="http://jboss.org/schema/seam/pages"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://jboss.org/schema/seam/pages http://jboss.org/schema/seam/pages-2.3.xsd"
      login-required="true" login-view-id="#{buenLogin.loginPage}">
 
</page>

Ejemplo para una página un grupo de páginas (fichero pages.xml):

<?xml version="1.0" encoding="UTF-8"?>
<pages xmlns="http://jboss.org/schema/seam/pages"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://jboss.org/schema/seam/pages http://jboss.org/schema/seam/pages-2.3.xsd"
       no-conversation-view-id="/${viewid.pagina.principal}"
       login-view-id="/${viewid.pagina.login}">
 
	<page view-id="/paginas/*" login-required="true"/>
 
	<page view-id="/paginas/admin/*" login-required="true" login-view-id="/login_admin.xhtml">
 	    <restrict>#{s:hasRole('ADMON')}</restrict>
	</page>
 
</page>

En el ejemplo anterior, tenemos que todas las páginas que estan dentro de la carpeta paginas y sus subcarpetas, tendran la página de login general de la aplicación, exceptuando las páginas que estan dentro de la carpeta paginas/admin que tendrán a /login_admin.xhtml como página de login.

Ejemplo para una página un grupo de páginas (fichero pages.xml) con una expresion EL:

<?xml version="1.0" encoding="UTF-8"?>
<pages xmlns="http://jboss.org/schema/seam/pages"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://jboss.org/schema/seam/pages http://jboss.org/schema/seam/pages-2.3.xsd"
       no-conversation-view-id="/${viewid.pagina.principal}"
       login-view-id="/${viewid.pagina.login}">
 
	<page view-id="/paginas/*" login-required="true"/>
 
	<page view-id="/paginas/admin/*" login-required="true" login-view-id="#{loginBean.adminLogin">
 	    <restrict>#{s:hasRole('ADMON')}</restrict>
	</page>
 
</page>

El orden de prioridad del atributo login-view-id, depende de la cercania de la ruta a la página. Por lo tanto la ruta más cercana tiene mayor prioridad, siendo el definido en el fichero .page.xml el de mayor prioridad.


JUAN MIGUEL BERNAL GONZALEZ 09/03/2020 13:19

  • fdw2.0/fundeweb2.0/gt/modificaciones_jboss_seam/pagina_login.txt
  • Última modificación: 09/03/2020 13:42
  • por JUAN MIGUEL BERNAL GONZALEZ