2016-12-01 137 views
0

我在我的項目中安裝了Laravel 5.2和oAuth2 Server Laravel 。我必須爲網站和web-api使用相同的功能。對於網站我的功能工作正常,但是當我使用web-api的相同功能顯示錯誤TokenMismatchException in VerifyCsrfToken.php line 67:如何處理oauth2和csrf令牌laravel

我的路線

/* for web*/ 
Route::post('admin/user_login', 'Auth\[email protected]'); 

/* for mobile api */ 
Route::group(['prefix'=>'api/','before' => 'oauth'], function() 
{ 
    Route::post('/user/login', 'Auth\[email protected]'); 

}); 

當我使用這個控制器的網絡,這個代碼工作正常,但是當我打電話API顯示錯誤的時間。我如何處理這個問題?我必須使用oAuth路由和網絡路由並行。提前致謝。

回答

2

必須禁用csrfToken驗證路線與API開始做編輯app/Http/Middleware/VerifyCsrfToken.php文件,並在$添加api/*除了陣列從laravel應用回購樣本文件如下

https://github.com/laravel/laravel/blob/5.2/app/Http/Middleware/VerifyCsrfToken.php

剛使它像

<?php 
namespace App\Http\Middleware; 
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier; 
class VerifyCsrfToken extends BaseVerifier 
{ 
    /** 
    * The URIs that should be excluded from CSRF verification. 
    * 
    * @var array 
    */ 
    protected $except = [ 
     'api/*' 
    ]; 
} 

您還必須從身份驗證路由中刪除oauth中間件,因爲在身份驗證期間令牌不可用所以路線如下

Route::group(['prefix'=>'api/'], function() 
{ 
    Route::post('/user/login', 'Auth\[email protected]'); 
    Route::group(['middleware' => 'oauth'], function() { 
     // routes which needs oauth token verification. 
    }) 

}); 
+0

謝謝你這麼多..... :) :) –

+0

你是最受歡迎的.. :) –