2014-12-05 212 views
0

此代碼來自Laravel,VerifyCsrfToken.php。這是評論解釋一些事情。我正在通過restangular從Angular向Laravel發送一個請求。令牌被正確發送(我認爲),但解密一個無效的數據異常。我可以通過在最後刪除Decrypt調用來使代碼生效。我看了看,發現沒有參考頭需要加密之前發送,我甚至不知道如何做到這一點。加密發送給Laravel的頭文件?

protected function tokensMatch($request) 
{ 
    $token = $request->session()->token(); 
      //from log, $token = UD6zHpg6lQYa9Xdz69kmOa3D2BBr12ErbhJD744x 

    $header = $request->header('X-XSRF-TOKEN'); 
      //from log, $header = UD6zHpg6lQYa9Xdz69kmOa3D2BBr12ErbhJD744x 

    if (StringUtils::equals($token, $header)) Log::info('Token' . $token . " -- Header " . $header); 

    return StringUtils::equals($token, $request->input('_token')) || 
     ($header && StringUtils::equals($token, $this->encrypter->decrypt($header))); 
         //original line - Decrypt Error - invalid data 

       ($header && StringUtils::equals($token, $header)); 
         //my alternative - works! 

         //HOW SHOULD THE HEADER BE ENCRYPTED when sent???? 
         //MY Current HEADER... 
         //X-XSRF-TOKEN: UD6zHpg6lQYa9Xdz69kmOa3D2BBr12ErbhJD744x 
} 

回答

0

我有同樣的問題,我只是使用加密器加密之前我使用它在角度我的令牌。

$encrypter = app('Illuminate\Encryption\Encrypter'); 
    $token = $encrypter->encrypt(csrf_token()); 

亞歷