laravelbrasil / forum

Ama Laravel? Torne se um Jedi e Ajude outros Padawans
GNU General Public License v3.0
252 stars 13 forks source link

Problema com TokenMismatchException in VerifyCsrfToken.php line 68: #49

Closed gabrieldesousah closed 7 years ago

gabrieldesousah commented 7 years ago

Descrição Geral do Problema

Problema Encontrado

No login que estou utilizando pelo próprio Laravel, em meu loccalhost tudo funciona perfeitamente, mas em servidor estou tendo o erro: TokenMismatchException in VerifyCsrfToken.php line 68:

já olheu tudo sobre o csrf_field() e parece estar funcionando corretamente, porém está dando erro.

Meu site para caso queiram testar: https://inovacaonaborracha.com.br/public/login

Abordagem

tentei mudar o .env tirando o base64 do app_key porém sem solução.


paulofreitas commented 7 years ago

Qual o driver de sessão em uso? Se você não alterou o config/session.php é o tal do SESSION_DRIVER informado no .env.

Sendo o driver padrão file (e eu já sei que é ele*), verifique se os arquivos de sessão estão sendo criados em storage/framework/sessions. Se não estiverem, você muito provavelmente se esqueceu de alterar a permissão do diretório storage.

Neste caso, faça isso:

sudo chgrp -R www-data storage
sudo chmod -R ug+rwx storage

Se o Laravel não estiver conseguindo criar os arquivos de sessão você receberá o TokenMismatchException em 100% das vezes.

Esta seria a razão mais provável levando em conta as versões mais recentes do Laravel e ainda o fato de funcionar localmente e no servidor não. Se o problema não for este, seria interessante saber qual versão você está usando. 👍

* Note que você foi avisado no caso #36 que seu arquivo .env está público para todo mundo ver. Ele continua público. 😐

PS: Adicione o base64: de volta ao app_key. Melhor, gere outra chave, essa já foi exposta. rs

gabrieldesousah commented 7 years ago

Kkkkkk muito obrigado, irei fazer o q me informou. Algumas dúvidas: para q serve o base64?

Como eu faço:

sudo chgrp -R www-data storage sudo chmod -R ug+rwx storage

No cPanel?

Como eu gero outra chave?

Desculpe a ignorância.. comecei há pouco tempo no Laravel

Em 28 de mar de 2017 23:09, "Paulo Freitas" notifications@github.com escreveu:

Qual o driver de sessão em uso? Se você não alterou o config/session.php é o tal do SESSION_DRIVER informado no .env.

Sendo o driver padrão file (e eu já sei que é ele*), verifique se os arquivos de sessão estão sendo criados em storage/framework/sessions. Se não estiverem, você muito provavelmente se esqueceu de alterar a permissão do diretório storage.

Neste caso, faça isso:

sudo chgrp -R www-data storage sudo chmod -R ug+rwx storage

Se o Laravel não estiver conseguindo criar os arquivos de sessão você receberá o TokenMismatchException em 100% das vezes.

Esta seria a razão mais provável levando em conta as versões mais recentes do Laravel. Se o problema não for este, seria interessante saber qual versão você está usando. 👍

PS: Adicione o base64: de volta ao app_key. Melhor, gere outra chave, essa já foi exposta. rs

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/laravelbrasil/forum/issues/49#issuecomment-289960479, or mute the thread https://github.com/notifications/unsubscribe-auth/ALQWY54IUZt9CsoXD1M715vVqnYpjB_sks5rqb1VgaJpZM4MsJci .

gabrieldesousah commented 7 years ago

Verifiquei a pasta storage/framework/sessions e ela tá com permissão 755 gerando todos os arquivos de sessão, porém o ocorre permanece.. Estou usando a versão 5.4 do Laravel

paulofreitas commented 7 years ago

@Gabrieldesousah As chaves de aplicação são codificadas através do algoritmo Base64. Se você remove o base64: você irá fazer o Laravel achar que sua APP_KEY é completamente diferente daquela que ele te gerou, gerando implicações quando o framework utiliza os recursos de encriptação.

Tanto as permissões como a geração de outra chave implicam em acesso ao servidor, idealmente via SSH. Mas se o servidor for compartilhado isso dificilmente estará disponível. 😞

No caso das permissões isso também pode ser feito via SFTP/FTP, mas pode não ser o suficiente. As permissões ug+rwx implicam em chmod 0775. Se está 0755 é sinal de que o grupo não tem permissão de escrita. Vi aqui que você está usando o LiteSpeed, pelo que sei ele usa o grupo www-data como o Apache. Apesar dos arquivos estarem sendo escritos no diretório, ainda pode haver algum problema em relação a isso, principalmente se estes arquivos foram gerados antes de subir o projeto pro servidor. O diretório storage e todos os demais diretórios dentro dele precisam ter a permissão 0775 ou ug+rwx. 👍

Sobre a geração da chave, se você não tiver acesso SSH, simplesmente faça isso localmente e envie o novo arquivo .env pro servidor. 👍

Não se esqueça de mudar outras credenciais expostas também. Além disso, coloque isso no .htaccess para bloquear o acesso ao .env:

<Files .env>
    Order Allow,Deny
    Deny from all
</Files>

Voltando ao problema...

Se o chmod 0775 não resolver, só para desencargo de consciência eu tentaria usar o driver de sessão database para certificar de que o problema realmente está fora de qualquer limitação externa.

Recentemente tenho visto aparecer situações bizarras envolvendo o TokenMismatchException depois que implementaram o SESSION_DOMAIN no arquivo config/session.php. Lá no issue tracker do Laravel tem vários casos falando sobre isso, como este aqui: https://github.com/laravel/framework/issues/15040#issuecomment-251688514 Alguns usuários reportaram que ao colocar o SESSION_DOMAIN no arquivo .env com o mesmo domínio do APP_URL o problema deixou de ocorrer. Note que, neste caso, tanto seu APP_URL como seu SESSION_DOMAIN precisam apontar para o domínio real da sua aplicação, no caso https://inovacaonaborracha.com.br/public/.

Resumindo então os próximos passos:

👍

gabrieldesousah commented 7 years ago

Muito obrigado @paulofreitas infelizmente nada que me informou deu certo.. então peguei uma versao anterior do site e upei. dessa vez deu certo efunciona bem. Muito obrigado por compartilhar seu conhecimento de forma tão ativa

paulofreitas commented 7 years ago

Por nada, @Gabrieldesousah! :)

Como a situação se resolveu estou marcando como resolvido, Ok?! 👍

Viva, o acesso ao arquivo .env foi bloqueado! 😄

Abraço! o/

gabrieldesousah commented 7 years ago

Kkkk eu nem sabia que ele estava disponível, Penske q era proibido por htaccess mas show de bola. Vlw ae

Em 30 de mar de 2017 22:36, "Paulo Freitas" notifications@github.com escreveu:

Por nada, @Gabrieldesousah https://github.com/Gabrieldesousah! :)

Como a situação se resolveu estou marcando como resolvido, Ok?! 👍

Viva, o acesso ao arquivo .env foi bloqueado! 😄

Abraço! o/

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/laravelbrasil/forum/issues/49#issuecomment-290591779, or mute the thread https://github.com/notifications/unsubscribe-auth/ALQWY0SuSCW2fOjm6e7OymyA6kG9J9U-ks5rrFixgaJpZM4MsJci .

robstermarinho commented 7 years ago

Eu estava com o mesmo problema. Pelo artisan serve a aplicação funcionava corretamente. Pelo servidor apache local não funcionava. Então seguindo a dica do @paulofreitas dei mais atenção a pasta storage/framework/sessions. Alterei as permissões e, além disso, deletei alguns arquivos que haviam lá e tudo funcionou perfeitamente. Obrigado a todos.

rsweigert commented 7 years ago

Eu estava com o mesmo problema no servidor na hora de registrar um usuario e o problema foi resolvido com a dica do @paulofreitas, alterando a permissão da pasta storage. Entretanto, um outro problema persiste: No servidor o login não é efetuado e não retorna nenhuma mensagem. Na maquina local funciona perfeito. Quando registro um novo usuario, ocorre o login automaticamente, mas quando faço logout e tento logar com o usuario que acabei de criar, nada acontece, volta para a tela de login inicial. Se alguem puder me ajudar eu agradeço.

gabrieldesousah commented 7 years ago

O usuário está sendo criado no seu banco de dados?

2017-09-16 11:34 GMT-03:00 rsweigert notifications@github.com:

Eu estava com o mesmo problema no servidor na hora de registrar um usuario e o problema foi resolvido com a dica do @paulofreitas https://github.com/paulofreitas, alterando a permissão da pasta storage. Entretanto, um outro problema persiste: No servidor o login não é efetuado e não retorna nenhuma mensagem. Na maquina local funciona perfeito. Quando registro um novo usuario, ocorre o login automaticamente, mas quando faço logout e tento logar com o usuario que acabei de criar, nada acontece, volta para a tela de login inicial. Se alguem puder me ajudar eu agradeço.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/laravelbrasil/forum/issues/49#issuecomment-329972135, or mute the thread https://github.com/notifications/unsubscribe-auth/ALQWY-DK0XSiWyAw7jvWD-0QBt4j-caRks5si9x2gaJpZM4MsJci .

-- Atenciosamente, Gabriel Henrique.

Criador do Seu Mérito ponto com http://seumerito.com/ Aluno de Engenharia Elétrica - UFG Organizador do Desafio Inovação na Borracha Membro de TI em Agremiação Politécnica da UFG Diretor Acadêmico no Centro Acadêmico de Engenharia Elétrica da UFG

rsweigert commented 7 years ago

Problema foi resolvido. Era falta de permissão na pasta Storage.

Enviado do meu iPhone

Em 24 de set de 2017, às 13:25, Gabriel Henrique notifications@github.com<mailto:notifications@github.com> escreveu:

O usuário está sendo criado no seu banco de dados?

2017-09-16 11:34 GMT-03:00 rsweigert notifications@github.com<mailto:notifications@github.com>:

Eu estava com o mesmo problema no servidor na hora de registrar um usuario e o problema foi resolvido com a dica do @paulofreitas https://github.com/paulofreitas, alterando a permissão da pasta storage. Entretanto, um outro problema persiste: No servidor o login não é efetuado e não retorna nenhuma mensagem. Na maquina local funciona perfeito. Quando registro um novo usuario, ocorre o login automaticamente, mas quando faço logout e tento logar com o usuario que acabei de criar, nada acontece, volta para a tela de login inicial. Se alguem puder me ajudar eu agradeço.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/laravelbrasil/forum/issues/49#issuecomment-329972135, or mute the thread https://github.com/notifications/unsubscribe-auth/ALQWY-DK0XSiWyAw7jvWD-0QBt4j-caRks5si9x2gaJpZM4MsJci .

-- Atenciosamente, Gabriel Henrique.

Criador do Seu Mérito ponto com http://seumerito.com/ Aluno de Engenharia Elétrica - UFG Organizador do Desafio Inovação na Borracha Membro de TI em Agremiação Politécnica da UFG Diretor Acadêmico no Centro Acadêmico de Engenharia Elétrica da UFG

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/laravelbrasil/forum/issues/49#issuecomment-331721070, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AJqpzTfg-yOXuTtVfjgavjS5NP-lcAF2ks5sloKIgaJpZM4MsJci.

Guizera commented 7 years ago

Estava com o mesmo problema, apenas limpei o Storage/framework/sessions e voltou funcionar normalmente!

mjbezer commented 7 years ago

Boas Galera.

Estou com o mesmo problema, no meu servidor local ( de desenvolvimento) esta funcionando perfeitamete, porem quando eu passo a aplicação para produção a aplicação até abre até a view de login, a partir desse ponto o erro acontece. Tomei as seguintes ações:

a) alterei o .env para PP_NAME=Laravel APP_ENV=local APP_KEY=base64:gQcJMuhOx5vZUG9QBitHzPlawF+T2PpfRw5ni+Hzkps= APP_DEBUG=true APP_LOG_LEVEL=debug APP_URL=http://http://www.kalecki.com.br/gerador/public/

alterei o /config/session.php para

'domain' => env('SESSION_DOMAIN', 'http://www.kalecki.com.br/gerador/public/'),

alterei a permissão do /storange para 775 Efetuei a limpeza do /storange/framework/session

Criei php artisan session:table php artisan migrate

Nada disso seu certo .

Mais uma vez . No servidor Local está funcionando. No servidor de produção não. Detalhe : O servidor de produção é compartilhado(provedor).

Alguém poderia me ajudar?

AlexandreBhz1 commented 7 years ago

Você tem acesso ao SSH? O composer está instalado no seu servidor?

Tentei subir um projeto desenvolvido localmente, e cai neste problema de configuração de rotas, resolvi meu problema instalando o composer no meu servidor em seguida instalando o laravel via composer aí só subi meus controles modelos e views e funcionou perfeitamente.

Em 8 de nov de 2017 11:32 PM, "mjbezer" notifications@github.com escreveu:

Boas Galera.

Estou com o mesmo problema, no meu servidor local ( de desenvolvimento) esta funcionando perfeitamete, porem quando eu passo a aplicação para produção a aplicação até abre até a view de login, a partir desse ponto o erro acontece. Tomei as seguintes ações:

a) alterei o .env para PP_NAME=Laravel APP_ENV=local APP_KEY=base64:gQcJMuhOx5vZUG9QBitHzPlawF+T2PpfRw5ni+Hzkps= APP_DEBUG=true APP_LOG_LEVEL=debug APP_URL=http://http://www.kalecki.com.br/gerador/public/

alterei o /config/session.php para

'domain' => env('SESSION_DOMAIN', 'http://www.kalecki.com.br/ gerador/public/'),

alterei a permissão do /storange para 775 Efetuei a limpeza do /storange/framework/session

Criei php artisan session:table php artisan migrate

Nada disso seu certo .

Mais uma vez . No servidor Local está funcionando. No servidor de produção não. Detalhe : O servidor de produção é compartilhado(provedor).

Alguém poderia me ajudar?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/laravelbrasil/forum/issues/49#issuecomment-343018593, or mute the thread https://github.com/notifications/unsubscribe-auth/Afz9bcuDeUiyFUWo_1qk0MJu7b41UCdEks5s0lYrgaJpZM4MsJci .

mjbezer commented 7 years ago

vou efetuar esse procedimento depois eu posto aqui.

mgsistemas commented 7 years ago

Olá

É preciso criar nova chave (APP_KEY) no servidor que foi instalado.

Acesso via SSH e dê o comando: php artisan key:generate

Assim será gerada nova chave.

Acho que resolve o seu problema.

Atenciosamente

Marcelo Gomes MG Consultoria e Serviços de TI (11) 2214-3585 / (11) 9 83643775 http://www.mgconsultoriainformatica.com.br

TrabalhoEmDia.com A evolução na forma de trabalhar https://www.trabalhoemdia.com

"As informações contidas nesta mensagem e no(s) anexo(s) são endereçadas exclusivamente à(s) pessoa(s) e/ou instituição(ões) acima indica(s) e podem conter informações confidenciais e/ou privilegiadas. Se você não for o destinatário ou a pessoa autorizada a recebê-la, queira, por favor, retorná-la ao remetente e em seguida apagá-la definitivamente. Qualquer uso, cópia ou divulgação das informações nela contidas, na íntegra ou parcialmente, são proibidas e serão tratadas conforme legislação vigente."

Em 10 de novembro de 2017 08:57, AlexandreBhz1 notifications@github.com escreveu:

Você tem acesso ao SSH? O composer está instalado no seu servidor?

Tentei subir um projeto desenvolvido localmente, e cai neste problema de configuração de rotas, resolvi meu problema instalando o composer no meu servidor em seguida instalando o laravel via composer aí só subi meus controles modelos e views e funcionou perfeitamente.

Em 8 de nov de 2017 11:32 PM, "mjbezer" notifications@github.com escreveu:

Boas Galera.

Estou com o mesmo problema, no meu servidor local ( de desenvolvimento) esta funcionando perfeitamete, porem quando eu passo a aplicação para produção a aplicação até abre até a view de login, a partir desse ponto o erro acontece. Tomei as seguintes ações:

a) alterei o .env para PP_NAME=Laravel APP_ENV=local APP_KEY=base64:gQcJMuhOx5vZUG9QBitHzPlawF+T2PpfRw5ni+Hzkps= APP_DEBUG=true APP_LOG_LEVEL=debug APP_URL=http://http://www.kalecki.com.br/gerador/public/

alterei o /config/session.php para

'domain' => env('SESSION_DOMAIN', 'http://www.kalecki.com.br/ gerador/public/'),

alterei a permissão do /storange para 775 Efetuei a limpeza do /storange/framework/session

Criei php artisan session:table php artisan migrate

Nada disso seu certo .

Mais uma vez . No servidor Local está funcionando. No servidor de produção não. Detalhe : O servidor de produção é compartilhado(provedor).

Alguém poderia me ajudar?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub <https://github.com/laravelbrasil/forum/issues/49#issuecomment-343018593 , or mute the thread https://github.com/notifications/unsubscribe-auth/Afz9bcuDeUiyFUWo_ 1qk0MJu7b41UCdEks5s0lYrgaJpZM4MsJci .

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/laravelbrasil/forum/issues/49#issuecomment-343442921, or mute the thread https://github.com/notifications/unsubscribe-auth/AIZeFKIHqZsWq9bcbMWfGZItxq6D_ex0ks5s1CwEgaJpZM4MsJci .

mjbezer commented 7 years ago

Esse problema foi resolvido:

Conclusão : Havia um problema de versão entre o servidor de desenvolvimento é o servidor compartilhado, desenvolvi a aplicação em php 7.1 e o servidor compartilhado estava com php 5.6

inclui a linha AddHandler application/x-httpd-php71 .php no .htaccess e resolveu.

Simples assim!

Obrigado a todos .

brds15 commented 6 years ago

Verifique no seu .env se a url de APP_URL é a mesma que está em etc/hosts

Dflugan commented 6 years ago

Obrigado pela dica paulofreires: sudo chmod -R ug+rwx storage Resolveu meu problema. Valeu

eduardo-mior commented 3 years ago

No meu caso era problema na pasta storage e nas suas sub-pastas que estavam sem permissão no linux.

Dei permissão 777 na pasta storage e nas subpastas framework e logs e nas subpastas cache, sessions e views da pasta framework e funcionou.

Pra quem é leigo, usei o comando sudo chmod 777