Astuce | ||
---|---|---|
| ||
Sommaire :
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 :
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 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
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 :
Et utiliser cette clé de cette manière dans test1.jsp :
|