Précédent   Forum des professionnels en informatique > Java > Général Java > Spring
Spring Forum d'entraide pour le framework Spring. Avant de poster -> FAQ Spring
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/01/2012, 16h34   #1
Rédacteur
 
Avatar de thierryler
 
Homme Thierry Leriche-Dessirier
Inscription : octobre 2007
Messages : 1 225
Détails du profil
Informations personnelles :
Nom : Homme Thierry Leriche-Dessirier
Localisation : France

Informations forums :
Inscription : octobre 2007
Messages : 1 225
Points : 3 460
Points : 3 460
Par défaut Populator dépendant d'un paramètre

Bonjour à tous,

J'ai une question qui concerne Spring Security et plus particulièrement les Populator.

Dans mon site, j'ai un paramètre, issu d'un select (ou qui prend une valeur par défaut si non settée), qu'on appellera "monparam" dans la suite.

Je vais chercher les rôles de mon utilisateur en fonction de "monparam". Par exemple, l'utilisateur "jean dupont" possède les rôles USER et ADMIN quand "monparam" vaut "42" et seulement le rôle USER quand "monparam" vaut "23". Evidemment "42" et "23", ainsi que les rôles associés, sont enregistrés en base et correspondent à mon métier.

En gros mon Populator ressemble à ça :
Code :
1
2
3
4
5
6
7
8
9
public class MonPopulator implements LdapAuthoritiesPopulator {
 
  @Override
  public final Collection<? extends GrantedAuthority> getGrantedAuthorities(DirContextOperations userData, String username) {
    final String monparam = chargerQuelquePart(...);
    final List<RoleEnum> roles = chargerEnBase(username, monparam);
  }
 
  ...
De là, je me pose deux questions :

1) Quelle est la bonne pratique, pour avoir "monparam" de dispo ici ?
2) Quand je change de valeur dans le select, ça renvoie sur home.jsf, et ça doit donc changer/recharger les rôles associés. Mais comment faire ?

Pour le premier point, j'avais pensé créer un filtre (web.xml) ou le stocker quelque part, ou même faire quelque chose dans le security-app-context.xml mais je ne sais pas trop quoi. Je bute là-dessus sans avoir de bonne idée...

Merci d'avance pour l'aide.
__________________
Thierry Leriche-Dessirier
Ingénieur Architecte JEE Freelance
Rédacteur pour Developpez
Professeur de Génie Logiciel à l'ESIEA

Page sur Developpez : http://thierry-leriche-dessirier.developpez.com
Page perso / pro : http://www.thierryler.com / http://www.icauda.com
Page Linked'in : http://www.linkedin.com/in/thierryler
Page twitter : http://www.twitter.com/thierryleriche
thierryler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 11h47   #2
Rédacteur
 
Avatar de thierryler
 
Homme Thierry Leriche-Dessirier
Inscription : octobre 2007
Messages : 1 225
Détails du profil
Informations personnelles :
Nom : Homme Thierry Leriche-Dessirier
Localisation : France

Informations forums :
Inscription : octobre 2007
Messages : 1 225
Points : 3 460
Points : 3 460
Je vais essayer de préciser un peu.

Dans mon site, j'appelle des URL du site www.monsite.com/monprojet/monaction/1/fr/enfant

Je mappe les paramètres "1", "fr" et "enfant" à l'aide de Pretty-faces, mais le filtre de Pretty vient après celui de Spring.

Ma question concerne le paramètre "1", qui peut prendre plein de valeur différentes. Il correspond grosso modo à une rubrique de mon site. Or les utilisateurs n'ont le droit de voir qu'une partie des-dites rubriques. Certains les voient toutes, certains n'en voient qu'une, certains en voient plusieurs. Et ce n'est pas juste une question de les voir mais d'avoir des rôles dessus (USER, ADMIN, MODERATOR, etc.) C'est configuré en base. Bien entendu, le site n'affiche qu'une seule rubrique à la fois.

Donc, si je résume, les droits d'accès dépendent du login ET de la rubrique demandée. Et à chaque changement d'URL, je peux imaginer qu'il y a potentiellement un changement de rubrique...

Je suis paumé sur ce point. Je ne sais pas par quel bout le prendre.

J'ai pensé à faire un hasRoleForRubrique('ADMIN') dans le security-app-context.xml et éventuellement de charger l'intégralité des rôles du user connecté, mais reste la question d'avoir accès aux paramètres de l'URL, et de coder cette méthode aussi...
__________________
Thierry Leriche-Dessirier
Ingénieur Architecte JEE Freelance
Rédacteur pour Developpez
Professeur de Génie Logiciel à l'ESIEA

Page sur Developpez : http://thierry-leriche-dessirier.developpez.com
Page perso / pro : http://www.thierryler.com / http://www.icauda.com
Page Linked'in : http://www.linkedin.com/in/thierryler
Page twitter : http://www.twitter.com/thierryleriche
thierryler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 11h47   #3
Expert Confirmé
 
Homme
Inscription : septembre 2006
Messages : 2 291
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2006
Messages : 2 291
Points : 2 738
Points : 2 738
Avez-vous regardé les ACLs ?

http://static.springsource.org/sprin...main-acls.html
JeitEmgie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 15h12   #4
Rédacteur
 
Avatar de thierryler
 
Homme Thierry Leriche-Dessirier
Inscription : octobre 2007
Messages : 1 225
Détails du profil
Informations personnelles :
Nom : Homme Thierry Leriche-Dessirier
Localisation : France

Informations forums :
Inscription : octobre 2007
Messages : 1 225
Points : 3 460
Points : 3 460
Merci, je vais lire tout ça.
__________________
Thierry Leriche-Dessirier
Ingénieur Architecte JEE Freelance
Rédacteur pour Developpez
Professeur de Génie Logiciel à l'ESIEA

Page sur Developpez : http://thierry-leriche-dessirier.developpez.com
Page perso / pro : http://www.thierryler.com / http://www.icauda.com
Page Linked'in : http://www.linkedin.com/in/thierryler
Page twitter : http://www.twitter.com/thierryleriche
thierryler est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h43.


 
 
 
 
Partenaires

Hébergement Web