Implémentation des stratégies de contrôle d'accès dans les affichages
Le contrôle d'accès au niveau des ressources pour les affichages est effectué par le gestionnaire de beans de données. Le gestionnaire de beans de données est invoqué dans les cas suivants : Lorsque le modèle JSP inclut la balise <useBean> et que le bean de données n'est pas dans la liste d'attributs. Lorsque le modèle JSP inclut la méthode d'activation suivante : DataBeanManager.activate(xyzDatabean, request);
Pourquoi et quand exécuter cette tâche
Tout bean de données qui doit être protégé (directement ou indirectement) doit implémenter l'interface Delegator. Tout bean de données qui doit être directement protégé déléguera à lui-même, et doit donc également implémenter l'interface Protectable. Les beans de données qui sont indirectement protégés doivent déléguer à un bean de données qui implémente l'interface Protectable.
Bien que ça ne soit pas recommandé, un contournement des contrôles d'accès se produit dans les cas suivants :
- Si le modèle JSP fait des appels directs pour accéder aux beans, plutôt que d'utiliser des beans de données.
- Si le modèle JSP invoque directement la méthode populate() du bean de données.
Si les résultats d'une commande de contrôleur doivent être transmis à un affichage (à l'aide de ForwardViewCommand), le contrôle d'accès au niveau de la commande n'est pas effectué sur les affichages. En outre, si la commande du contrôleur place les beans de données remplis (qui sont utilisés dans l'affichage) sur la liste d'attributs de la propriété de réponse, puis les transmet à un affichage, le modèle JSP peut accéder aux données sans passer par le gestionnaire de beans de données. Cela nécessite que les balises <useBean> soient utilisées dans le modèle JSP. Cela peut être un moyen de rendre un modèle JSP plus efficace, car il peut contourner les contrôles d'accès redondants au niveau des ressources pour les ressources (beans de données) auxquels l'utilisateur a déjà obtenu accès via la commande du contrôleur.