Comment utiliser correctement isUserInRole(rôle)

Pour empêcher un rôle d'utilisateur à partir de l'exécution d'une action.

  1. Exemple 1: Le rôle "administrateur"
    est le seul rôle autorisés à effectuer
    détruire l'action.
  2. Exemple 2: un rôle différent de "invité" peut effectuer de CRÉER une action.

Dans un cas réel, j'ai ceci:

public String delete() {
 if(FacesContext.getCurrentInstance().getExternalContext().isUserInRole("administrator"){
   //.....the action to perform
 }
 return "Denied";
}

Je souhaite que je pourrais utiliser l'annotation @RolesAllowed() des EJB pourtant, je ne suis pas à l'aide d'EJB mais ManagedBeans.
La question est donc: Est-il possible d'utiliser de nombreux rôles en même temps? Certains solution de contournement!
Exemple: Si une action doit être autorisé à 3 rôles (administrateur, modérateur, administrateur). Je suis obligé de faire :

if (FacesContext.getCurrentInstance().getExternalContext().isUserInRole("administrator")
    || FacesContext.getCurrentInstance().getExternalContext().isUserInRole("manager") 
    || .....) {
  //....
}

Et c'est une douleur à reproduire sur toutes les méthodes. Quelque chose comme des centaines de méthodes 🙁

OriginalL'auteur Hanynowsky | 2011-06-29