Acabei de fazer uma nova instalação do Magento 1.9.0.1 e estou vendo um comportamento muito estranho no formulário de login do cliente.
No Chrome (versão 36), o formulário de login não funciona. Acabei de ser redirecionado para a página de login. Não há nenhuma mensagem de erro. No entanto, quando abro uma nova janela de navegação anônima, consigo fazer o login muito bem. Pensando que este era um problema de cookie, limpei todos os meus cookies do navegador e tentei novamente e obtive os mesmos resultados. Nos dois casos, consigo acessar o painel de administração sem problemas.
Eu também tentei isso no Firefox e no Safari. Firefox Eu via a mesma coisa (mas não de forma consistente e eu poderia corrigi-lo limpando os cookies) e não conseguia replicar no Safari.
Eu nunca tive um problema com isso em qualquer outra versão do Magento. Existe algum tipo de mudança fundamental na maneira como o Magento lida com cookies na versão 1.9 e / ou há algo que eu posso fazer para tornar isso mais estável?
fonte
www
por exemploabc.com
, foi redirecionado parawww.abc.com
. Nesse caso, o navegador estava configurando os cookies para os dois e os logins pararam de funcionar, mas se eu excluir manualmente o cookie que estava semwww
os logons, começamos a funcionar novamente.Respostas:
Eu tive o mesmo problema....
A resposta é que seu tema não fornece uma variável chamada
form_key
.Assim como dito acima, devo acrescentar:
você adiciona logo depois
<ul class="form-list">
para cada um dos meus
login.phtml
arquivos para o tema.Você também pode ter problemas com a quantidade de atualização dos itens do carrinho
Aqui está a importância de
form_keys
:Desde o início dos tempos, o back-end do Magento continha uma chave de formulário que protegia contra ataques XSS [1]. Com o Magento 1.8, a chave do formulário entrou no frontend pelo mesmo motivo: para se proteger contra o envio de formulários de outro site, usando seu navegador. um invasor mal-intencionado pode adicionar itens ao seu carrinho enquanto você estiver em uma guia diferente do navegador ou até mesmo concluir um pedido. Isso depende de URLs previsíveis, porque o site não terá acesso ao conteúdo HTML real na guia do navegador onde você tem o seu pedido Magento em espera. Tudo o que é enviado para a loja Magento enviará seus cookies e, portanto, usará sua sessão.
Ao adicionar uma chave exclusiva a cada formulário ou a cada link que gera uma ação no servidor, o conteúdo da URL ou do formulário deixa de ser previsível. A chave do formulário é armazenada nos dados da sessão e validada após o envio ao servidor. Se eles não corresponderem, você receberá um erro de chave do formulário e a ação não será concluída.
fonte
<?php echo $this->getBlockHtml('formkey'); ?>
em vez da entrada grande.Pode ser:
cookie setting issue in Chrome browser
OU
Magento 1.9 está usando a
form key validation at customer loggin and register
página.Por
Post action
isso verifique a chave de formausing function _validateFormKey()
a controladorform key issue: form key missing
então adicione esse código no seu formulárioOU
Cookie domain setting issue
configuração de verificação de goto é adequada ou nãoàs
Admin>System>configuration>General>Web>Session Cookie Management
fonte
if (!$this->_validateFormKey()) {
retorna false, o que significa que o Magento não pode validar a chave fornecida. Alguma idéia de por que isso acontece?Como o problema parece estar relacionado ao cookie, tente aumentar o tempo de vida do cookie para 86400 em
O motivo pode ser que, por padrão, o tempo de vida do cookie esteja definido como 3600 (1 hora). Mas se o tempo do computador do usuário final ultrapassar o tempo do servidor, os cookies não serão definidos para o front-end do Magento e para o back-end. Por exemplo, o tempo do computador do usuário final é 1 hora antes do tempo do servidor, o que significa que o cookie (contendo a ID da sessão do usuário) expirará assim que o usuário efetuar login ou tentar adicionar um item.
fonte
Para futuros leitores: existem muitas causas possíveis para esse problema. Durante o logon, algum log de exceção é suprimido por razões de segurança; portanto, seu problema não será exibido
var/log/exception.log
.Para diagnosticar seu problema:
app/code/core/Mage/Customer/controllers/AccountController.php
e vá para ologinPostAction
métodoMage::logException($e);
chamada e salve a alteraçãoNão se esqueça de desfazer as alterações no
app/code/core/Mage/Customer/controllers/AccountController.php
!A causa do meu problema foi que uma classe falhou ao carregar automaticamente porque o módulo (incorretamente) o
<codePool>community</codePool>
substituiu<codePool>local</codePool>
.fonte
Corrigi o problema adicionando a linha de código abaixo no arquivo phtml de login persistente.
fonte
ok depois de lutar por meia hora eu descobri exatamente em quais pastas login.phtml eu tenho que mudar. Então vá para
e cole
depois de
é isso aí.
fonte
Se você estiver usando o cache do Varnish, pode haver um problema diferente. Estou citando uma solução que encontrei em outro lugar. https://github.com/nexcess/magento-turpentine/issues/169
fonte
A razão para esse problema é que o formulário de login personalizado não contém nenhuma chave_formulário e há uma validação de chave de formulário acontecendo no loginPostAction do Magento.
Você pode corrigi-lo como abaixo:
Encontrar:
e cole isso logo após o código acima:
fonte
O acima funcionou para mim absolutamente bem, mas eu estava atualizando do Magento 1.4.1 para 1.9.1, então um grande salto. Os arquivos não foram encontrados em nenhum lugar no local acima, mas estavam localizados na pasta app / design / frontend / BASE.
Esta pasta base contém muitos arquivos comuns desde o Magento 1.4, então eu li ... Espero que isso poupe a alguém as muitas horas de trabalho que me levou.
fonte
Se você estiver usando qualquer extensão de login social, adicione também a chave de formulário nesse arquivo login.phtm
fonte
Verifique se o php-mbstring está instalado e ativado no seu servidor.
Caso contrário, o login do administrador funcionará enquanto o cliente não.
Essa verificação pode ser feita examinando a saída
phpinfo()
ou ativando temporariamente a exceção de login em torno da linha177
:app/code/core/Mage/Customer/controllers/AccountController.php
Esteja ciente de que a operação pode divulgar a senha do cliente no rastreamento de exceção registrada.
fonte
Eu tive o mesmo problema e resolvi-o excluindo todos os cookies. O problema parece acontecer se você tiver várias lojas de magento diferentes e fizer login com elas ao mesmo tempo.
fonte