Atualização qtd na página do carrinho não funciona por causa do conflito formkey
-
29-09-2020 - |
Pergunta
Configuração:Verniz + Pagecache módulo, Redirecionar todas as páginas para a www.no htaccess
Problema:Sempre que alguém bate sem www página de um PAGECACHE_FORMKEY cookie é armazenado.Em seguida, eles redirecionado para www.e outra PAGECACHE_FORMKEY cookie é armazenado, mas com um valor diferente.
Meu código tem o formkey:
<form action="<?php echo $this->getUrl('checkout/cart/updatePost') ?>" method="post">
<?php echo $this->getBlockHtml('formkey'); ?>
Tentei com:
<form action="<?php echo $this->getUrl('checkout/cart/updatePost') ?>" method="post">
<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>"/>
Ainda não trabalho, como Mage::getSingleton('core/session')->getFormKey()
saídas a segunda formkey.Se eu excluir o primeiro PAGECACHE_FORMKEY, então ele vai funcionar.
Como posso ignorar formkey de verificação checkout/cart/updatePost
?
(Isso não tem nada a ver com o meu tema, o que acontece com o tema padrão muito, então eu acho que é um problema com a conexão que PageCache módulo estabelece entre verniz e o magento aplicação.)
Solução
A solução foi para desativar formkey validação no checkout_cart_updatePost
do evento.
function disableCsrf($observer)
{
$events = array(
'checkout_cart_updatePost',
);
$route = $observer->getEvent()->getControllerAction()->getFullActionName();
if (in_array($route, $events)) {
$key = Mage::getSingleton('core/session')->getFormKey();
Mage::app()->getRequest()->setParam('form_key', $key);
}
}
Mesmo que em SupportDesk_CartFormKey
módulo.