Proteger vistas
Cualquier vista invocada directamente desde un URL o que se inicia como una redirección desde otro mandato, necesita una política de control de acceso basada en roles para poder visualizarla.
Por qué y cuándo se efectúa esta tarea
El ejemplo siguiente muestra una política basada en roles para las vistas:
<Policy Name="ProductManagersExecuteProductManagersViews"
OwnerID="RootOrganization"
UserGroup="ProductMangers"
ActionGroupName="ProductMangersViews"
ResourceGroupName="ViewCommandResourceGroup"
PolicyType="groupableStandard">
</Policy>
El nombre del grupo de recursos, ViewCommandResourceGroup
, indica que es una política basada en roles para vistas. La política indica que los usuarios del grupo de usuarios ProductManagers
pueden visualizar las vistas del grupo de acciones ProductMangersViews
. Del mismo modo, para la mayoría de las roles, existe un grupo de acción correspondiente que agrupa las vistas a las que puede acceder el rol, como por ejemplo el rol Seller
-> grupo de acceso Sellers
-> grupo de acción SellersViews
.
A continuación se muestra un ejemplo del grupo de acciones ProductMangersViews
:
<ActionGroup Name="ProductManagersViews"
OwnerID="RootOrganization">
<ActionGroupAction Name="ProductImageView"/>
<ActionGroupAction Name="ProductManufacturerView"/>
<ActionGroupAction Name="ProductSalesTaxView"/>
</ActionGoup>
El ejemplo anterior lista las tres acciones, ProductImageView
, ProductManufacturerView
y ProductSalesTaxView
que se pueden realizar en el grupo de acciones ProductManagerViews
.
A continuación se muestra un ejemplo de definición de la acción ProductImageView
:
<Action Name="ProductImageView"
CommandName="ProductImageView">
</Action>
El atributo Name
, ProductImageView,
se utiliza como una etiqueta para hacer referencia a la acción en cualquier lugar del archivo XML como, por ejemplo, cuando se asocia la acción a un grupo de acciones.
VIEW NAME
de los archivos de configuración de Struts, deben coincidir con CommandName
en la definición de la acción. El valor de CommandName
se almacena en la columna ACTION de la tabla ACACTION
. Los atributos Name
y CommandName
no tienen que ser iguales.