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

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Commentaire: Migration of unmigrated content due to installation of a new plugin
Astuce
titleBon pour relecture


Sommaire :

Sommaire
maxLevel3

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 :

Bloc de code
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 à :

Bloc de code
<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 à :

Bloc de code
<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) :

Bloc de code
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
Générer un lien direct

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 :

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

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

Bloc de code
<e:text value="#{msgs['URL.TEXT']}" escape="false" >
    <f:param value="#{test1Controller.url}" />
</e:text>
solution
todo
A compléter !
A compléter !