画面は開発中のものです画面は開発中のものです人生とは、永遠のβテストだ。「田舎」に対する私の思い私の創業計画書お金の話ツーリングレポート読んだ本・出会った人2018年09月09日Laravelで「画面ログインしてるときだけ叩けるAPI」を実装した際の備忘録ここのところお仕事でLaravelを使った開発をやっております。Laravelのバージョンは5.5系。今作っているシステムの設計としては、まず各モデルごとにAPIを実装して、データの読み書き削除は全てAPIを経由して処理する、といったもの。諸々のデータ操作を出来るようにしたい。どんな感じで実装に至ったのか、書いていきます。手っ取り早く解決したい人向け以下の記事が大変参考になりました。いうか今回やりたかった実装についてそのまま記載されています。QiitaLaravelは標準でAPI用のルーティングなり設定が用意されています。これらの設定はトークンを利用して認証状態をチェックするものでありステートレスであることが前提となっています。サーバサイドでレンダリングして、一部分だけち...そもそものルーティング設定APIの処理の実装の際、ルーティング設定は「routes/api.php」に記載していました。Route::apiResources([(中略)]);こんな感じで。ルーティング処理をmiddlewareで囲めば解決......しない!?「Laravelで認証使いたかったらauthミドルウェアを使いなされ」という教えのもと、上記ルート定義を次のように書き換えました。{Route::apiResources([(中略)]);});これにて「画面でログイン認証が通っていない場合はAPIで処理を実行出来ない」という実装はクリア。問題があるとすれば、このままだと「画面でログイン認証が通っていてもAPIで処理を実行出来ない」ということですね。えっ、API叩くときってセッションが空なんですか。LaravelのAuthまわりのコアな処理にloggerを仕込みまくって確認したところ、APIでルーティングされている処理を叩いた際、セッションが空だということがわかりました。「API」でのルーティングの場合はそれらが為されていないのです。API叩く際にもセッションを扱ってくれれば解決、と。新たなルーティング設定を定義するところから実装しています。定義の変更を加えていきます。];これにて(「routes/api.php」への変更も含めて)、webでログインしている際はAPIでの処理を実行でき、ログインしていないときは処理を実行できない、という挙動を実現させることができました。*今回は、ルーティングごとに呼び出しているミドルウェアに差異が生じていることから、こうした「一手間」が必要となりました。元々の設定の方が「スッキリ」しています。今回のように、画面で認証しているときにしかAPIを叩かせたくない、という実装がレアケースなのかなぁ......その辺りはもう少し場数を踏んでいけば、わかってくることなのかもしれません。小林佑輔1987年生。青春時代及び社会人経験の初期を神奈川県で過した後、2018年5月、福岡県うきは市に移住。システムエンジニアとして食い繋ぎつつ、そこで培ったスキルを地域貢献に活かせないか模索中。blog:画面は開発中のものです。https://t.co/acCsaDURQmよく読まれてますPVスポンサードリンク最新記事(画像付)"関係人口"による参画の仕組みとしての「レビューブック」構想されど、空の青さを知る。「るり色の読書会(2019/8/24)」開催によせてそういえば、自分は読書家だったのかもしれない。"ゆるキャラ"「うきぴー」を絵心0の私が書くとこうなる[うきは本籍地開拓日誌]夏はとっくに過ぎて秋も終わりそうですが本籍地無事ですか「塩鯨」を食す。