Pages enfant
  • 3.13.1 Générer des URLs (directes) vers l'application

Bon pour relecture


Sommaire :


La génération des liens directs s'appuie sur le bean urlGenerator, déclaré dans le fichier de configuration /properties/urlGeneration/urlGeneration.xml.

Ce bean doit implémenter l'interface UrlGenerator, qui possède les méthodes suivantes :

String guestUrl(final Map<String, String> params);
String guestUrl();
String casUrl(final Map<String, String> params);
String casUrl();
String shibbolethUrl(final Map<String, String> params);
String shibbolethUrl();

Comme on le voit, il existe des méthodes pour générer des URLs vers l'application directement (avec ou sans paramètres) et d'autres en passant par un serveur CAS.

Les URLs construites seront différentes selon que l'on est en mode portlet ou servlet, une implémentation est prévue pour chacun des cas.

Configuration en mode portlet

Il faut en mode portlet spécifier :

  • L'URL du serveur CAS,
  • L'URL de l'application.

Le fichier urlGeneration.xml ressemblera à :

<bean
    id="urlGenerator"
    class="org.esupportail.org.services.urlGeneration.UportalUrlGeneratorImpl"
    >
  <property
      name="casLoginUrl"
      value="https://cas.domain.edu/login?service=%s" />
  <property
      name="uportalFunctionnalName"
      value="esup-application" >
  <property
      name="uportalUrl"
      value="http://uportal.domain.edu/Login" />
</bean>

 L'URL du serveur CAS (casLoginUrl), facultative, est utilisée par les méthodes urlViaCas() ; dans le cas où elle est omise (quand il n'y a pas d'authentification CAS), les méthodes urlViaCas() lancent une exception.

Le paramètre uportalFunctionnalName est le nom sous lequel le canal de la portlet a été publié dans uPortal.

Configuration en mode servlet

Il faut en mode servlet spécifier :

  • L'URL du serveur CAS,
  • L'URL de l'application.

Le fichier urlGeneration.xml ressemblera à :

<bean
    id="urlGenerator"
    class="org.esupportail.commons.services.urlGeneration.ServletUrlGeneratorImpl"
    >
  <property
      name="serlvetCasLoginUrl"
      value="https://cas.domain.edu/login?service=%s" />
  <property
      name="servletUrl"
      value="http://application.domain.edu:port/path" >
</bean>

L'URL du serveur CAS (casLoginUrl), facultative, est utilisée par les méthodes urlViaCas() ; dans le cas où elle est omise (quand il n'y a pas d'authentification CAS), les méthodes urlViaCas() lancent une exception. Le motif %s est remplacé à l'exécution par l'URL de l'application, pour le retour du navigateur après l'authentification.

Exemple

Supposons que l'on veuille générer une URL directe vers l'application qui l'amène directement sur une page montrant les caractéristiques d'un utilisateur. Nous prenons les paramètres page (auquel nous donnerons la valeur showUser) et userId (auquel nous donnerons comme valeur l'identifiant de l'utilisateur dont on veut afficher les caractéristiques).

La génération d'une telle URL directe via CAS dans un contrôleur se fait de la manière suivante (on suppose que le contrôleur a accès au générateur d'URL, via Spring) :

Map<String, String> params = new HashMap<String, String>();
params.put("page", "showUser");
params.put("userId", id);
String urlViaCas = getUrlGenerator().urlViaCas(params);
Exercice : Générer un lien direct Afficher l'énoncéCacher l'énoncé

Afficher sur la vue test1.jsp un lien direct vers l'application avec un paramètre param égal à l'attribut myInput.

On pourra pour afficher l'URL sous forme d'un lien direct déclarer une clé de bundle :

URL.TEXT = <a href="{0}">{0}</a>

Et utiliser cette clé de cette manière dans test1.jsp :

<e:text value="#{msgs['URL.TEXT']}" escape="false" >
    <f:param value="#{test1Controller.url}" />
</e:text>
Afficher la solutionCacher la solution

TODO A compléter !



  • Aucune étiquette