2017-06-07 9 views
0

Laravel 5.4では、私のルート/ web.phpにAPIをいくつか作成しました。これらのAPIは.NETアプリケーションによって呼び出されます。 最初に呼び出されるAPIはログインです。その後、私はいくつかのデータをセッションに入れます。 他のAPIを呼び出す前に、データがセッション中であるかどうかを確認しますが、最初の呼び出し(ログイン)後に2番目の呼び出しを呼び出すと、セッションがフラッシュ/期限切れに見えます。Laravel APIのセッションが終了しました

ここに私の経路コード:

// API 
Route::group(["prefix" => "api"], function() { 
    // Login 
    Route::post("login", "[email protected]"); 

    Route::group(["middleware" => "isNotAuthenticatedAPI"], function() { 
     Route::group(["middleware" => "loginDBUser"], function() { 
      // Importazioni 
      Route::group(["prefix" => "importazioni"], function() { 

       // Utenti 
       Route::post("utenti", "[email protected]"); 
       // Attività (Abbonamenti) 
       Route::post("attivita", "[email protected]"); 
       // Iscrizioni 
       Route::post("iscrizioni", "[email protected]"); 
      }); 

      // Richieste 
      Route::group(["prefix" => "richieste"], function() { 
       // Ultima iscrizione 
       Route::post("ultima_iscrizione/{subscription_external_id?}", "[email protected]"); 
      }); 
     }); 
    }); 
}); 

ミドルウェアisNotAuthenticatedAPI:

public function handle($request, Closure $next) { 
     $res = [ 
      "result" => null, 
      "errors" => [ 
      ] 
     ]; 

     if (!$request->session()->get("user.api")) { 
      $res["result"] = false; 
      $res["errors"][] = [ 
       "code" => APIController::WARNING_SESSION_EXPIRED, 
       "message" => trans("api.w_session_expired") 
      ]; 
      return response()->json($res); 
     } 

     return $next($request); 
    } 

私のconfig/session.php:

'lifetime' => 120, 

    'expire_on_close' => false, 

私は/ルートへのルートのコードを入れてみましたapi.phpが、結果は変わりません。

+0

APIを実装するには、api.phpルータ –

答えて

0

時間への変換分

シンプルあなたの問題がクッキーであるかどうかをテストするには、ブラウザでapiにログインし、その後に他のapiを呼び出してみてください。すべてうまくいくなら、それはクッキープロです傷み。

+0

を使用する必要があります。私のブラウザAPIでは正しく動作しますが、リクエストセッションが終了するたびに.NETアプリケーションが動作します。 – Mintendo

+0

はい、私が言ったように、それはクッキーの問題です。だから、(トークンやヘッダーなどを使って)ユーザーをログインさせる別の方法を使用することをお勧めします。セッションを継続したい場合は、.Netクライアントのストアクッキー値の検索を続けてください。 .NETクライアントが何であるか分かりません。ごめんなさい。 –

1

セッション または他の のうち、「設定( 『session.lifetime』)* 60セットセットミドルウェアハンドラでは、このオプションを時間を増やすために設定した値=設定/ session.php 寿命にプロパティを設定してください。//あなたはAPIでセッションを継続して使用する場合は、クライアント(.NETアプリケーション)がクッキーを保存することを確認して、後のリクエストでそれを含めてください解決この問題

関連する問題