What is the right way to resolve token mismatch error in laravel?

Viewed 16967

since I've updated laravel to 5.4 I constantly get:

TokenMismatchException in VerifyCsrfToken.php line 68

exception thrown. After some digging and reading through a whole lot of posts and github issues I've figured that my tokens aren't matching :). The point is that my laravel app sets the encrypted version of the token "XSRF-TOKEN" instead of its plain (X-CSRF-TOKEN) counterpart and the helper csrf_token() spits out the plain token hence mismatching tokens. Confusing though why documentation mentions X-XSRF-TOKEN when I get XSRF-TOKEN (missing X-) instead? So the questions are:

  1. Has the missing "X-" some meaning?
  2. How do I change the encrypted version of the token to the plain one? (regardless of the question #3)
  3. Should I even try to make a plain token out of the encrypted one or is it better to encrypt csrf_token() instead? (Does it even matter, since the connection is encrypted?)
  4. Is listing "XSRF-TOKEN" under $excepted in the \MiddleWare\EncryptCookies.php a viable option or could you suggest a better solution instead? (which sort of brings us back to the question #3)

I'm sorry for so many questions and thanks in advance!

Edit

After rereading my questions several times I came to conclusion that they weren't clear enough and didn't complied with the title. My problem were the mismatching tokens and I thought having my doubts cleared would lead me to a solution, I thank @ThomasMoors for his patience and help. I will accept his answer, and although I've solved my problem a different way, it was his help that led me to the solution! I've additionally posted my own answer which describes how I've solved my issue to help others having similar issues!

3 Answers

I found a interesting things about token mismatch exception. I have faked my date time in AppServiceProvider as:

/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
    Carbon::setTestNow('2000-07-05 4:00 pm');
}

After that I coundn't logged in into my laravel application. Otherwise just one command enough to solve token mismatch exception.

php artisan config:clear
Related