Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

M2 #14

Closed
wants to merge 5 commits into from
Closed

M2 #14

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 18 additions & 8 deletions es/controllers/components/check-http-cache.rst
Original file line number Diff line number Diff line change
@@ -1,11 +1,21 @@
Checking HTTP Cache
===================
Comprobando la Caché HTTP
=========================

.. note::
La documentación no es compatible actualmente con el idioma español en esta página.
.. php:class:: CheckHttpCacheComponent(ComponentCollection $collection, array $config = [])

Por favor, siéntase libre de enviarnos un pull request en
`Github <https://github.com/cakephp/docs>`_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios.
El modelo de validación de caché HTTP es uno de los procesos utilizados por las pasarelas de caché, también conocidas como proxies inversos, para determinar si pueden servir una copia almacenada de una respuesta al cliente. Bajo este modelo, principalmente se ahorra ancho de banda, pero cuando se utiliza correctamente, también se puede ahorrar algo de procesamiento de CPU, reduciendo los tiempos de respuesta::

Usted puede hacer referencia a la versión en Inglés en el menú de selección superior
para obtener información sobre el tema de esta página.
// En un Controlador
public function initialize(): void
{
parent::initialize();

$this->addComponent('CheckHttpCache');
}

Habilitar el componente ``CheckHttpCache`` en su controlador activa automáticamente una comprobación ``beforeRender``. Esta comprobación compara los encabezados de caché establecidos en el objeto de respuesta con los encabezados de caché enviados en la solicitud para determinar si la respuesta no se ha modificado desde la última vez que el cliente la solicitó. Se utilizan los siguientes encabezados de solicitud:

``If-None-Match`` se compara con el encabezado ``Etag`` de la respuesta.
``If-Modified-Since`` se compara con el encabezado ``Last-Modified`` de la respuesta.

Si los encabezados de la respuesta coinciden con los criterios de los encabezados de la solicitud, se omite el renderizado de la vista. Esto ahorra a su aplicación la generación de una vista, ahorrando ancho de banda y tiempo. Cuando los encabezados de la respuesta coinciden, se devuelve una respuesta vacía con un código de estado ``304 No Modificado``.
88 changes: 81 additions & 7 deletions es/controllers/components/flash.rst
Original file line number Diff line number Diff line change
@@ -1,11 +1,85 @@
FlashComponent
##############
Flash
#####

.. php:namespace:: Cake\Controller\Component

.. php:class:: FlashComponent(ComponentCollection $collection, array $config = [])

FlashComponent proporciona una manera de establecer mensajes de notificación de una sola vez que se mostrarán después de procesar un formulario o reconocer datos. CakePHP se refiere a estos mensajes como "flash messages" (mensajes flash). FlashComponent escribe mensajes flash en ``$_SESSION``, para ser renderizados en una Vista usando
:doc:`FlashHelper </views/helpers/flash>`.

Configuración de Mensajes Flash
===============================

FlashComponent proporciona dos formas de establecer mensajes flash: su método mágico ``__call()`` y su método ``set()``. Para dotar a su aplicación de verbosidad, el método mágico ``__call()`` de FlashComponent le permite usar un nombre de método que se asigna a un elemento ubicado en el directorio templates/element/flash. Por convención, los métodos camelcased se asignarán al nombre del elemento en minúsculas y con guiones bajos::

// Utiliza templates/element/flash/success.php
$this->Flash->success('Esto fue un exito');

// Utiliza templates/element/flash/great_success.php
$this->Flash->greatSuccess('Esto fue un gran exito');

Alternativamente, para establecer un mensaje de texto plano sin renderizar un elemento, puede usar el método ``set()``::

$this->Flash->set('Este es un mensaje');

Los mensajes flash se agregan a un array internamente. Llamadas sucesivas a
``set()`` o ``__call()`` con la misma clave agregarán los mensajes en la
``$_SESSION``. Si desea sobrescribir mensajes existentes al establecer un mensaje flash, establezca la opción clear en true al configurar el componente.

Los métodos ``__call()`` y ``set()`` de FlashComponent opcionalmente toman un segundo
parámetro, un array de opciones:

* ``key`` Por defecto es 'flash'. La clave del array que se encuentra bajo la clave Flash en la sesión.
* ``element`` Por defecto es null, pero se establecerá automáticamente al usar el método mágico __call(). El nombre del elemento a usar para renderizar.
* ``params`` Un array opcional de claves/valores para poner a disposición como variables dentro de un elemento.
* ``clear`` espera un bool y le permite borrar todos los mensajes en el stack actual y comenzar uno nuevo.

Un ejemplo de uso de estas opciones::

// En su Controlador
$this->Flash->success('El usuario ha sido guardado', [
'key' => 'positivo',
'clear' => true,
'params' => [
'nombre' => $usuario->nombre,
'email' => $usuario->email,
],
]);

// En su Vista
<?= $this->Flash->render('positivo') ?>

<!-- En templates/element/flash/success.php -->
<div id="flash-<?= h($key) ?>" class="message-info success">
<?= h($message) ?>: <?= h($params['nombre']) ?>, <?= h($params['email']) ?>.
</div>

Tenga en cuenta que el parámetro `element` siempre se anulará al usar ``__call()``. Para recuperar un elemento específico de un plugin, debe establecer el parámetro plugin. Por ejemplo::

// En su Controlador
$this->Flash->warning('Mi mensaje', ['plugin' => 'NombreDelPlugin']);

El código anterior utilizará el elemento warning.php bajo
plugins/NombreDelPlugin/templates/element/flash para renderizar el mensaje flash.

.. note::
La documentación no es compatible actualmente con el idioma español en esta página.

Por favor, siéntase libre de enviarnos un pull request en
`Github <https://github.com/cakephp/docs>`_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios.
Por defecto, CakePHP escapa el contenido en los mensajes flash para prevenir
scripting entre sitios. Los datos de usuario en sus mensajes flash se codificarán en HTML y
estarán seguros para ser impresos. Si desea incluir HTML en sus mensajes flash,
debe pasar la opción ``escape`` y ajustar sus plantillas de mensajes flash
para permitir desactivar el escape cuando se pasa la opción de escape.

HTML en Mensajes Flash
======================

Es posible imprimir HTML en mensajes flash usando la clave 'escape' en las opciones::

$this->Flash->info(sprintf('<b>%s</b> %s', h($resaltar), h($mensaje)), ['escape' => false]);

Asegúrese de escapar manualmente la entrada, entonces. En el ejemplo anterior,
`$resaltar` y `$mensaje` son entradas no HTML y, por lo tanto, están escapadas.

Usted puede hacer referencia a la versión en Inglés en el menú de selección superior
para obtener información sobre el tema de esta página.
Para obtener más información sobre cómo renderizar sus mensajes flash, consulte la
sección :doc:`FlashHelper </views/helpers/flash>`.
155 changes: 148 additions & 7 deletions es/controllers/components/form-protection.rst
Original file line number Diff line number Diff line change
@@ -1,15 +1,156 @@
FormProtection
##############

.. php:class:: FormProtection(ComponentCollection $collection, array $config = [])

El Componente FormProtection proporciona protección contra la manipulación de datos de formularios.

Al igual que todos los componentes, se configura mediante varios parámetros configurables.
Todas estas propiedades se pueden establecer directamente o a través de métodos de configuración del mismo nombreen los métodos ``initialize()`` o ``beforeFilter()`` de su controlador.

Si está utilizando otros componentes que procesan datos de formularios en sus devoluciones de llamada ``startup()``, asegúrese de colocar el Componente FormProtection antes de esos componentes en su método ``initialize()``.

.. note::

Al utilizar el Componente FormProtection, **debe** utilizar FormHelper para crear
sus formularios. Además, **no** debe anular ninguno de los atributos "name" de los campos.
El Componente FormProtection busca ciertos indicadores que son
creados y gestionados por FormHelper (especialmente aquellos creados en
:php:meth:`~Cake\\View\\Helper\\FormHelper::create()` y
:php:meth:`~Cake\\View\\Helper\\FormHelper::end()`). Modificar dinámicamente
los campos que se envían en una solicitud POST, como deshabilitar, eliminar
o crear nuevos campos mediante JavaScript, probablemente causará que la validación del token de formulario
falle.

Prevención de manipulación de formularios
=========================================

De forma predeterminada, el ``FormProtectionComponent`` evita que los usuarios manipulen
formularios de maneras específicas. Evitará las siguientes cosas:

* La acción (URL) del formulario no se puede modificar.
* No se pueden agregar campos desconocidos al formulario.
* No se pueden eliminar campos del formulario.
* No se pueden modificar los valores en los campos de entrada ocultos.

Evitar estos tipos de manipulación se logra trabajando con el ``FormHelper``
y haciendo un seguimiento de qué campos están en un formulario. También se hace un seguimiento
de los valores para los campos ocultos. Todos estos datos se combinan y se convierten en un hash y campos de token ocultos se insertan automáticamente en los formularios. Cuando se envía un formulario, el ``FormProtectionComponent`` utilizará los datos POST para construir la misma estructura y comparar el hash.

.. note::
La documentación no es compatible actualmente con el idioma español en esta página.

Por favor, siéntase libre de enviarnos un pull request en
`Github <https://github.com/cakephp/docs>`_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios.
El ``FormProtectionComponent`` **no** evitará que se agreguen/cambien opciones de selección.
Tampoco evitará que se agreguen/cambien opciones de radio.

Uso
===

La configuración del componente de protección de formularios se realiza generalmente en los métodos
``initialize()`` o ``beforeFilter()`` del controlador.

Las opciones disponibles son:

validate
Establecer en ``false`` para omitir completamente la validación de solicitudes POST,
esencialmente desactivando la validación del formulario.

unlockedFields
Establecer a una lista de campos de formulario para excluir de la validación POST. Los campos pueden ser
desbloqueados ya sea en el componente o con
:php:meth:`FormHelper::unlockField()`. Los campos que han sido desbloqueados no son
obligatorios para formar parte del POST y los campos ocultos desbloqueados no tienen
sus valores verificados.

unlockedActions
Acciones para excluir de las comprobaciones de validación POST.

validationFailureCallback
Devolución de llamada para llamar en caso de fallo de validación. Debe ser un Closure válido.
No está configurado por defecto, en cuyo caso se lanzará una excepción en caso de fallo de validación.

Desactivar las comprobaciones de manipulación de formularios
============================================================

::

namespace App\Controller;

use App\Controller\AppController;
use Cake\Event\EventInterface;

class WidgetsController extends AppController
{
public function initialize(): void
{
parent::initialize();

$this->loadComponent('FormProtection');
}

public function beforeFilter(EventInterface $event)
{
parent::beforeFilter($event);

if ($this->request->getParam('prefix') === 'Admin') {
$this->FormProtection->setConfig('validate', false);
}
}
}

El ejemplo anterior desactivaría la prevención de manipulación de formularios para rutas con prefijo de administrador.

Desactivar la manipulación de formularios para acciones específicas
===================================================================

Puede haber casos en los que desee desactivar la prevención de manipulación de formularios para una acción (por ejemplo, solicitudes AJAX). Puede "desbloquear" estas acciones enumerándolas en ``$this->FormProtection->setConfig('unlockedActions', ['edit']);`` en su ``beforeFilter()::``

::

namespace App\Controller;

use App\Controller\AppController;
use Cake\Event\EventInterface;

class WidgetController extends AppController
{
public function initialize(): void
{
parent::initialize();
$this->loadComponent('FormProtection');
}

public function beforeFilter(EventInterface $event)
{
parent::beforeFilter($event);

$this->FormProtection->setConfig('unlockedActions', ['edit']);
}
}

Este ejemplo desactivaría todas las comprobaciones de seguridad para la acción de edición.

Manejo de fallos de validación a través de devoluciones de llamada
==================================================================

Si falla la validación de la protección de formularios, por defecto resultará en un error 400.
Puede configurar este comportamiento estableciendo la opción de configuración ``validationFailureCallback``
a una función de devolución de llamada en el controlador.

Al configurar un método de devolución de llamada, puede personalizar cómo funciona el proceso de manejo de fallos::

public function beforeFilter(EventInterface $event)
{
parent::beforeFilter($event);

Usted puede hacer referencia a la versión en Inglés en el menú de selección superior
para obtener información sobre el tema de esta página.
$this->FormProtection->setConfig(
'validationFailureCallback',
function (BadRequestException $exception) {
// Puede devolver una instancia de respuesta o lanzar la excepción
// recibida como argumento.
}
);
}

.. meta::
:title lang=en: FormProtection
:keywords lang=en: configurable parameters,form protection component,configuration parameters,protection features,tighter security,php class,meth,array,submission,security class,disable security,unlockActions
:title lang=es: FormProtection
:keywords lang=es: parametros configurables,componente de protección de formularios,parametros de configuracion,características de protección,tighter security,clase php,método,array,envío,clase de seguridad,desactivar seguridad,desbloquear acciones
Loading
Loading