我的URLLaravel除令牌不匹配错误
http://laravel/tr/order/fp1/success
VerifyCsrfToken除外。
protected $except = [
'order/*'
];
但我有令牌不匹配错误。
更新:
我张贴数据,以外部网页(银行服务器),他们被张贴到我的网站。
我的URLLaravel除令牌不匹配错误
http://laravel/tr/order/fp1/success
VerifyCsrfToken除外。
protected $except = [
'order/*'
];
但我有令牌不匹配错误。
更新:
我张贴数据,以外部网页(银行服务器),他们被张贴到我的网站。
我解决了这个问题。
在除了属性之外,我们必须编写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().'/'
现在,我们除了可以使用属性,而无需编写语言路径。
根据Op的评论,似乎请求来自外部网站,我们无法从我们的应用程序生成csrf标记。
因此,有两种可能的解决方案
方法1:
应该从以前要求的应用CSRF令牌,然后发送带有令牌
方法请求时请求2:
您应该附加传入请求的参数,并在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);
}
通过这样做,您可以检查请求是否与外部应用程序具有的参数值不匹配。
希望能帮到你
为什么我们不会使用受保护的属性$除外? –
我对此不太确定,但是我也像你一样穿越了相同的情况,并在中间件中处理这些情况! –
如果手动生成表单,则放置'_token'? –
对不起。我更新了。 –
然后,您应该可以禁用该特定请求的csrf过滤器 –