Eu vejo essa linha de código dentro do formulário de login.
<?php echo $block->getBlockHtml('formkey'); ?>
- Qual é a utilidade disso?
- É mais seguro?
- É uma obrigação para a postagem do formulário?
As chaves de formulário no Magento são um meio de impedir a falsificação de solicitação entre sites . Em resumo, é para protegê-lo das pessoas que tentam postar em seus formulários (como adicionar ao carrinho) de outros sites que se apresentam como você.
Isso pode ser perigoso, porque alguém poderia teoricamente criar seu próprio formulário e publicar em qualquer ação do controlador de manipulador de formulários em sua loja. A proteção CSRF basicamente ignora qualquer publicação que falhe na verificação do parâmetro form_key incluído na publicação de formulário.
<?php echo $this->getBlockHtml('formkey')?>
Ele diz ao Magento para procurar um bloco de layout com o nome "formkey" e enviá-lo. No Magento, isso geralmente é um arquivo que contém isso:
<div><input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" /></div>
Isso instrui o Magento a produzir e armazenar uma chave de formulário exclusiva para uma sessão do usuário. Todas as ações do controlador Magento protegidas por CSRF serão verificadas contra isso antes de fazer qualquer coisa de valor.
\Magento\Framework\Data\Form\FormKey\Validator
.Você pode adicionar formkey por este código:
Se você deseja adicionar uma chave de formulário no arquivo phtml, use direct
Usando Injeção de Dependência no seu construtor de classe:
Nota: Não use o gerenciador de objetos diretamente nos arquivos phtml
fonte
ObjectManager
uso no front-end. Essa não é uma boa prática.Não há necessidade de inicializar o gerenciador de objetos e tudo, você pode usar.
Frontend você pode usar:
Espero que isto ajude!
obrigado
fonte