Antes de ler a seguir verifique se você tem @csrf
ou {{ csrf_field() }}
em sua forma
como
<form method="post">
@csrf <!-- {{ csrf_field() }} -->
... rest of form ...
</form>
A mensagem de erro Session Expired ou 419 Page Expired no larvel aparece porque em algum lugar a verificação do token csrf falha, o que significa que o App\Http\Middleware\VerifyCsrfToken::class
middleware já está ativado. No formulário, a @csrf
diretiva blade já foi adicionada, o que também deve servir.
Então, a outra área a verificar é a sessão. A csrf
verificação do token está diretamente envolvida com a sua sessão, portanto, você pode querer verificar se o driver da sessão está funcionando ou não, como um Redis configurado incorretamente pode causar um problema.
Talvez você possa tentar trocar o driver / software de sessão do .env
arquivo, os drivers suportados são fornecidos abaixo
Drivers de sessão com suporte no Laravel 5, Laravel 6 e Laravel 7 (Doc Link)
file
- as sessões são armazenadas em armazenamento / estrutura / sessões.
cookie
- as sessões são armazenadas em cookies criptografados seguros.
database
- as sessões são armazenadas em um banco de dados relacional.
memcached
/ redis
- as sessões são armazenadas em um desses armazenamentos rápidos baseados em cache.
array
- as sessões são armazenadas em um array PHP e não serão persistidas.
Se o seu formulário funcionar depois de trocar o driver de sessão, então algo está errado com esse driver específico, tente corrigir o erro a partir daí.
Possíveis cenários propensos a erros
Provavelmente, as sessões baseadas em arquivo podem não funcionar por causa dos problemas de permissão com o /storage
diretório (uma busca rápida no Google irá buscar a solução), lembre-se também de colocar 777 para o diretório nunca é a solução.
No caso do driver de banco de dados, sua conexão com o banco de dados pode estar errada ou a sessions
tabela pode não existir ou pode estar configurada incorretamente (a parte de configuração errada foi confirmada como um problema conforme o comentário de @Junaid Qadir).
redis/memcached
a configuração está errada ou está sendo manipulada por alguma outra parte do código no sistema ao mesmo tempo.
Pode ser uma boa ideia executar php artisan key:generate
e gerar uma nova chave de aplicativo que, por sua vez, liberará os dados da sessão.
Limpar cache do navegador DIFÍCIL , descobri que o cromo e o firefox são os culpados mais do que consigo me lembrar.
Leia mais sobre por que as chaves do aplicativo são importantes
return;
você pode ligarreturn redirect()->back();
. Pelo que posso ver, o aplicativo não tem nada a ver após a solicitação de postagem. Talvez você possa redirecioná-lo para uma visualização após o processamento da solicitação.