2017-04-02 59 views
2

我正在使用銀行api。
銀行發送郵寄請求到我的網站,但沒有返回沒有一個令牌字段是他們的要求,我面臨TokenMismatchException

我該如何解決這個問題?
下面是coresponding代碼:
從其他域發送的請求結果TokenMismatchException

public function submitPayment() 
{ 
    $api = 'test'; 
    $amount = '3443354'; 
    $redirect = URL::to('new-order/after-payment'); 
    $result = $this->send($api, $amount, $redirect); 
    $result = json_decode($result); 

    return redirect("https://example.com/$result->transId"); 
} 
+1

改爲_csrf_token可以通過在'應用添加路線/ HTTP /中間件/ VerifyCsrfToken.php'文件中除了陣列 –

+0

結帳HTTP禁用CSRF令牌檢查://stackoverflow.com/questions/31427840/laravel-tokenmismatchexception/32125744#32125744 –

+0

@AkshayKhale謝謝 – mehdirahimi

回答

1

總之你要重命名的默認_token爲Laravel的CSRF令牌字段名稱爲別的東西,

你可以覆蓋功能照亮\基金會\ HTTP \中間件\ VerifyCsrfToken @ tokensMatch(); from App \ Http \ Middleware \ VerifyCsrfToken Class並更改CSRF參數名稱。

您可以在您的App \ Http \ Middleware \ VerifyCsrfToken文件中添加以下代碼。

/** 
    * Determine if the session and input CSRF tokens match. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @return bool 
    */ 
    protected function tokensMatch($request) 
    { 
     $sessionToken = $request->session()->token(); 

     $token = $request->input('_csrf_token') ?: $request->header('X-CSRF-TOKEN'); 

     if (! $token && $header = $request->header('X-XSRF-TOKEN')) { 
      $token = $this->encrypter->decrypt($header); 
     } 

     if (! is_string($sessionToken) || ! is_string($token)) { 
      return false; 
     } 

     return hash_equals($sessionToken, $token); 
    } 

在上述功能CSRF場從_token