2017-03-20 7 views
0

パスポートが稼働しています。私のアプリケーションには、私のAPIに接続するJavaScript AJAXが含まれています。私はそれを作るようにしていますので、OAuthシステム全体を処理する代わりにSessionに基づいて動作します。これが可能であるようにドキュメントでLaravel Passport - 「Unauthenticated」を表示するのではなく、ローカルJavascriptリクエストのOAuthを自動的にバイパスします。

、それが見えます:https://laravel.com/docs/5.4/passport#consuming-your-api-with-javascript

はしかし、私は現在、「未認証。」取得しています

Kernel.php:

protected $middlewareGroups = [ 
    'web' => [ 
     \App\Http\Middleware\EncryptCookies::class, 
     \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
     \Illuminate\Session\Middleware\StartSession::class, 
     // \Illuminate\Session\Middleware\AuthenticateSession::class, 
     \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
     \App\Http\Middleware\VerifyCsrfToken::class, 
     \Illuminate\Routing\Middleware\SubstituteBindings::class, 
     \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class, 
    ], 

    'api' => [ 
     \App\Http\Middleware\EncryptCookies::class, 
     \Illuminate\Session\Middleware\StartSession::class, 
     \App\Http\Middleware\VerifyParametersMiddleware::class, 
     'throttle:60,1', 
     'bindings', 
    ], 
]; 

例api.phpルート:

Route::group(['middleware' => ['auth:api']], function() { 
    Route::resource('canvas-item', 'CanvasItemController', 
     [ 
      'only' => [ 
       'index', // GET api/canvas-item 
       'store', // POST api/canvas-item 
       'update', // PUT api/canvas-item/{canvas-item-id} 
       'destroy' // DELETE api/canvas-item/{canvas-item-id} 
      ], 
     ] 
    ); 
}); 

例JavaScriptの要求:ドキュメントを持っているために求めている

function ajaxRequest() { 
    $.APIAjax({ 
     url: '{{ url('api/canvas-item') }}', 
     type: 'POST', 
     data: { 
      testing: null 
     }, 
     success: function(jsonResponse) {}, 
     error: function(jsonResponse) {} 
    }); 
} 

$.ajaxSetup({ 
    headers: { 
     'X-CSRF-TOKEN': token 
    } 
}); 

ヘッダ正しく設定されました:

X-CSRF-TOKEN  
"<tokenhere>" 
X-Requested-With  
"XMLHttpRequest" 

過去の「認証されていない」取得方法に関するアイデア要求が同じサーバーから来ている場合

ありがとうございます! Kernel.php

から

\App\Http\Middleware\EncryptCookies::class, 

を削除

答えて

0

は、APIのルートが正しく認証することを可能にしました。この問題に対処する公式/安全な方法でない場合は、教えてください。

関連する問題