【问题标题】:Still Got error 'TokenMismatchException ' in laravel V5.4 when form submit with post method:当使用 post 方法提交表单时,laravel V5.4 中仍然出现错误“TokenMismatchException”:
【发布时间】:2017-12-23 09:31:39
【问题描述】:

我是laravel V5.4的初学者,我已经设置了基本配置。

我制作了一个注册表单,但在控制器中使用 post 方法提交表单时出现错误TokenMismatchException

提前致谢。

我有以下代码。

查看文件:

<form method="post" style="margin: 20% 40%;" action="{{ action('UserController@insert_record')}}">
        {{ csrf_field() }}
        <table>
            <tr>
                <td>First Name</td>

                <td><input type="text" name="FirstName" /></td>
            </tr>
            <tr>
                <td>Last Name</td>
                <td><input type="text" name="LastName" /></td>
            </tr>
            <tr>
                <td>Gender</td>
                <td>
                    <input type="radio" name="Gender" checked="checked" value="Male"/>
                    <input type="radio" name="Gender" value="Female"/>
                </td>
            </tr>
            <tr>
                <td><input type="submit" value="Insert" /></td>
            </tr>
        </table>

    </form>

路由/Web.php

Route::match(['get', 'post'],'/insert_employer','UserController@insert_record');

app/Http/Middelware/VerifyCsrfToken.php

<?php

 namespace App\Http\Middleware;

 use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

 class VerifyCsrfToken extends BaseVerifier
{
  /**
  * The URIs that should be excluded from CSRF verification.
  *
  * @var array
  */
   protected $except = [
    //
  ];




 }

用户控制器.php

<?php

 namespace App\Http\Controllers;

 use Illuminate\Http\Request;

 use DB;
 use App\Http\Requests;
 use App\Http\Controllers\Controller;
 use App\employers;

class UserController extends Controller
{
   public function index(){
   $users = employers::all();
   return view('user_view',['users'=>$users]);
}

public function add_employer(){
   return view('add_employer');
}



  public function insert_record(){
   echo '<pre>';print_r($_GET); echo '<pre>';print_r($_POST);exit;

 }


 }

【问题讨论】:

  • 你的错误是什么?你被困在哪里了?

标签: php laravel laravel-5.4


【解决方案1】:

dd(request()-&gt;all());放在insert_record()的开头会得到什么

【讨论】:

  • 这不应该是评论而不是答案吗?
  • 无法发表评论但仍想帮助他的东西。
  • @joeri 在 insert_record() 开始时出现错误“TokenMismatchException”。
  • 尝试使用 {!! csrf_token() !!} 或删除完整输入并使用 {{ csrf_field() }} 希望其中一个选项对您有用。
【解决方案2】:

将您的 csrf_token 移到输入之外:

<form action="">
{{  csrf_token() }}
<table>
</table>
</form>

【讨论】:

  • 我尝试使用 '{{ csrf_token() }}' 但仍然遇到同样的错误。
【解决方案3】:

试试这个:

<form>
  {!! csrf_field() !!}

  ...rest of the form body
</form>

【讨论】:

【解决方案4】:

Laravel 5.4 默认在中间件中强制执行 CSFR 令牌身份验证。如果您使用 post 方法提交表单,最好将 CRSF 中间件放置在每个路由的基础上,而不是将其放置为全局中间件。

/**
* The application's global HTTP middleware stack.
*
* @var array
*/
protected $middleware = [
  'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class',
  'Illuminate\Cookie\Middleware\EncryptCookies::class',
  'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class',
  'Illuminate\Session\Middleware\StartSession::class',
  'Illuminate\View\Middleware\ShareErrorsFromSession::class',
  //comment out to avoid CSRF Token mismatch error
  // '\App\Http\Middleware\VerifyCsrfToken::class',,
];

/**
* The application's route middleware.
*
* @var array
*/
protected $routeMiddleware = [
   'auth' => 'App\Http\Middleware\Authenticate::class',
   'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class',
   'guest' => 'App\Http\Middleware\RedirectIfAuthenticated::class',
   'cors' => 'App\Http\Middleware\CorsMiddleware::class',
   'api' => 'App\Http\Middleware\ApiMiddleware::class',
   'csrf' => 'App\Http\Middleware\VerifyCsrfToken::class'// add it as a middleware 
   route 

然后转到\Http\Controllers\Middleware\VerifyCsrfToken.php 和 在protected $except 中添加要排除在此验证之外的路线。示例:

protected $except = [
    'user*'
];

确保您的 php 文件在打开 &lt;?php 标记之前不以空行或空格开头!这给我带来了很多麻烦。包括上面那个!

我想就是这样。希望对你有用!!

【讨论】:

  • 已经解决了,但是是否可以不禁用 csrf token middelware?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-09
  • 2017-10-23
  • 1970-01-01
  • 2020-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多