4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Laravel】APIでSessionが使えなかった時の予備録

Posted at

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時間ほど悩まされました。。笑

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?