我的网址
http://laravel/tr/order/fp1/success
VerifyCsrfToken除外。
protected $except = [
'order/*'
];
但我有Token Mismatch Error。
更新
我将数据发布到外部网页(银行服务器)并且他们正在发布到我的网站。
答案 0 :(得分:0)
根据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);
}
通过这样做,您可以检查请求是否与外部应用程序具有的参数值不匹配。
希望,这有助于你
答案 1 :(得分:0)
我解决了这个问题。
在Except Property中,我们必须编写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属性而无需编写语言路径。