Protection des vues
Toute vue appelée directement d'une adresse URL ou lancée par réacheminement à partir d'une autre instruction, nécessite une stratégie de contrôle d'accès basée sur les rôles afin de pouvoir être visualisée.
Pourquoi et quand exécuter cette tâche
L'exemple suivant illustre une stratégie basée sur les rôles et destinée aux vues :
<Policy Name="ProductManagersExecuteProductManagersViews"
OwnerID="RootOrganization"
UserGroup="ProductMangers"
ActionGroupName="ProductMangersViews"
ResourceGroupName="ViewCommandResourceGroup"
PolicyType="groupableStandard">
</Policy>
Le nom ResourceGroupName, ViewCommandResourceGroup, indique qu'il s'agit d'une stratégie basée sur les rôles destinée aux vues. La stratégie stipule que les utilisateurs du groupe ProductManagers peuvent afficher les vues du groupe d'actions ProductMangersViews. De même, pour la plupart des rôles, un groupe d'actions correspondant contient les vues auxquelles peut accéder ce rôle tel que Seller -> groupe d'accès Sellers -> groupe d'actions SellersViews.
Voici un exemple du groupe d'actions ProductMangersViews :
<ActionGroup Name="ProductManagersViews"
OwnerID="RootOrganization">
<ActionGroupAction Name="ProductImageView"/>
<ActionGroupAction Name="ProductManufacturerView"/>
<ActionGroupAction Name="ProductSalesTaxView"/>
</ActionGoup>
L'exemple précédent répertorie les trois actions ProductImageView, ProductManufacturerView et ProductSalesTaxView, qui peuvent être effectuées dans le groupe d'action ProductManagerViews.
Voici un exemple de la définition de l'action ProductImageView :
<Action Name="ProductImageView"
CommandName="ProductImageView">
</Action>
L'attribut Name, ProductImageView, est utilisé comme balise pour faire référence à l'action à un autre emplacement dans le fichier XML lors, par exemple, de l'association de l'action à un groupe d'actions.
VIEW NAME des fichiers de configuration Struts, doit correspondre au nom CommandName dans la définition de l'action. La valeur de CommandName est stockée dans la colonne ACTION de la table ACACTION. Les attributs Name et CommandName ne doivent pas être les mêmes.