laravelでAPIでルーティングされている処理の中でSessionを呼び出そうと思ったら、
エラーになりました。。
下記が追記したAPIのルーティングファイルです。
routes/api.php
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Route::post('/api/func/', 'ApiController@cardAuth');
そして以下がAPIの処理になります。
今回はカード情報をrequestで取得したあと、Sessionに入れようとしました・・・
Controllers/ApiController.php
public function cardAuth(Request $request) {
Session::put(self::KEY_SESSION_ONE, $request->all());
$ss_one = Session::get(self::KEY_SESSION_ONE)
$model = new InfoForm($ss_one);
〜〜 (処理) 〜〜
が、設定しておいたloggerを見てみると、
$ss_one内に値が設定されていないというエラーの連続。
〜〜以下からが解決方法です!〜〜
appディレクトリのKarnel.phpを見てみましょう。
デフォルトでは'api'にSessionに関する記述が書かれていません。
なので追記します。
app/Karnel.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,
],
'api' => [
\App\Http\Middleware\EncryptCookies::class, //追記
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, //追記
\Illuminate\Session\Middleware\StartSession::class, //追記
\Illuminate\View\Middleware\ShareErrorsFromSession::class, //追記
'throttle:60,1',
],
];
こうすればAPIルーティングされた処理の中でもSessionを使うことが可能になります!
Modelの設定だと思い込み1時間ほど悩まされました。。笑