TokenMismatchException,尽管排除了路由

时间:2016-11-03 12:08:47

标签: php laravel-5 csrf

我尝试使用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以来解决这个问题 现在问题出现了agian。 当我尝试向该路线发送帖子请求时,我得到了“TokenMismatchException'。

1 个答案:

答案 0 :(得分:1)

  

方法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);
    }
  

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

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

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


 });