【问题标题】:TokenMismatchException , despite excluding routeTokenMismatchException ,尽管不包括路由
【发布时间】:2016-11-03 20:52:37
【问题描述】:

我正在尝试使用 ajax 创建一个 img 上传。 我使用插件 https://github.com/Vinelab/mr-uploader ,我得到 CSRFTokenMismatchException 。 我之前通过在 verifyCsrf 上添加到 $execpet 的路由解决了这个问题

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

}

自从第一次解决问题以来,我将整个项目从 laravel 5.1 重新恢复到 laravel 5(长话短说,我不得不这样做) 现在问题出现了。 当尝试向该路由发送发布请求时,我得到“TokenMismatchException”。

【问题讨论】:

  • 分享你的ajax代码?还有刀片。
  • ajax 代码是我提到的插件/库的一部分。
  • 问题是,即使我试图发送一个裸帖子请求,我也会收到此错误

标签: php laravel-5 csrf


【解决方案1】:

方法一:禁用 CSRF 保护

在VerifyCsrfToken.php中添加如下代码

检查 csrf 令牌时将忽略此路由..

public function handle($request, Closure $next)
    {
        //disable CSRF check on following routes
        $skip = array(
                    '/admin/upload',
                    );

        foreach ($skip as $key => $route) {
            //skip csrf check on route
            if($request->is($route)){
                return parent::addCookieToResponse($request, $next($request));
            }
        }
        return parent::handle($request, $next);
    }

方法二:在ajax请求中添加CSRF TOKEN

var token      = "{{ csrf_token() }}";

    $.ajax({
         type : "POST",
         url  : "/admin/upload",
         data : {_token:token},


 });

【讨论】:

  • 将其添加到供应商或 app/http/verifyCSRFToken ?
  • 不要跳过,通过ajax请求提供csrf令牌,限制上传任何人都是不安全的。
  • 添加app/Http/Middleware/verifyCSRFToken.php
  • 它返回Argument 2 passed to App\Http\Middleware\VerifyCsrfToken::handle() must be an instance of App\Http\Middleware\Closure, instance of Closure given, called in E:\working-Dir\maaleGilboa5\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php on line 125 and defined
  • @Rishi 如何将它添加到 ajax 中?我尝试了类似 :type: "POST", url: url, cache: !1, dataType: "json", data: { _token: csrf, photo: photo, meta: meta, crop: crop },
猜你喜欢
  • 2020-06-10
  • 1970-01-01
  • 1970-01-01
  • 2015-11-23
  • 2013-10-07
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多