Laravel 除了令牌不匹配错误

Laravel Except Token Mismatch Error

我的URL

http://laravel/tr/order/fp1/success

VerifyCsrfToken 除了 .

protected $except = [
    'order/*'
];

但是我有令牌不匹配错误。

更新:

我正在将数据发布到外部网页(银行服务器),他们正在发布到我的网站。

根据 Op 的评论,请求似乎来自外部站点,我们无法从我们的应用程序生成 csrf 令牌。

所以,有两种可能的解决方案

方法一:

请求应该从先前请求的应用程序中获取 csrf 令牌,然后使用令牌发送请求

方法二:

您应该在传入请求中附加一个参数,并将其放在 app\Http\Middleware\VerifyCsrfToken.php

$paramExist=  $request->yourSecretParam;
    #return parent::handle($request, $next);
        if(isset($paramExist))
        {
            $yourSpecialkey ='a2$%$'; #This to check whether the param has the value that you set
            if($paramExist==$yourSpecialKey)
            {
                return $next($request);
            }
            else
            {
                return parent::handle($request, $next);
            }

        }   
        else
        {
            return parent::handle($request, $next);
        }

通过这个你可以检查请求是否与外部应用程序的参数值不匹配。

希望对您有所帮助

我解决了问题。

在Except 属性中我们要写URI。但是我没有写语言路径。

protected $except = [
    'tr/order/*'
];

如果我写语言路径。这是工作。但是硬编码语言路径不合逻辑。

我在 Laravel 中覆盖了 BaseVerifier 的 shouldPassThrough。

protected $except = [
    'order/*',
];

protected function shouldPassThrough($request)
{
    foreach ($this->except as $except) {
        if ($request->is(trim(Lang::locale().'/'.$except, '/'))) {
            return true;
        }
    }

    return false;
}

我们加上Lang::locale().'/'

现在不用写语言路径就可以使用except 属性