我的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過濾器 –