前提
Laravel5.8とVue2.5でSPAアプリケーションを作成しております。
このアプリケーションではユーザーの認証機構を必要とします。
Laravel+Vueの構成での認証のBest Practiceなどを調べましたが、JWTAuthはLaravel5.8でインストールできないため、
認証ページのみLaravelにデフォルトで入っているauthを用いて作成しました。
(ログイン認証が必要な最初のページだけはphp artisan make:auth
によって生成されたbladeを用いており、ログイン後の描画は全てVue.jsで書いています。)
発生している問題
ログイン直後のディレクトリ/
では、Laravel Debugbar
のAuth
のタブにて、ログインフォームで入力したユーザーが認証されていることが確認できるのに、別ページに遷移した時には認証されているユーザーがguest
に切り替わってしまうケースがあります。
また、/hoge
に遷移した時はユーザー認証が継続されているのに、/huga
に遷移したときはユーザー情報がGuest
に切り替わっていることを確認しています。
[追記]ユーザー認証が継続されている/hoge
への移動の際は、vueファイルのtemplate
のexport default{}
中でcreated()
をしていないという共通点を見つけました。ということは、ユーザー情報が失われる/huga
のページでは、created()
の中でLaravelのバックエンドからデータを取得する際に問題が起きているのでしょうか...?
ログイン直後、期待通りにユーザー情報を所持している時のLaravel Debagbar(/
)
ログイン後に別のページに遷移してユーザー情報が途切れてしまった時のLaravel Debagbar(/huga
)
ユーザー情報がGuest
に切り替わっていることがわかります。
試したこと
ユーザー情報が途切れているページで
use Illuminate\Support\Facades\Auth; ... protected function index() { $user = Auth::user(); return response($user, 200) ->header('Content-Type', 'application/json'); }
などとしてもuser情報が出ないので、Laravel Debagbarの不調ではなく純粋にユーザー情報が途切れてしまっています。
また、同じようなVueによるページでもユーザー情報が取得できている/
→/hoge
ではユーザー情報が途切れないのに/
→/huga
ではユーザー情報が途切れる事実からも何かVueとの連携でおかしいことが起きているのかと予想しておりますが、原因の切り分けがこれ以上できません。
また、/
→/huga
で一度ユーザー情報がGuest
になってしまうと、そのあとは/
に戻ったとしてもユーザー情報はずっとGuest
のままです。
補足情報(FW/ツールのバージョンなど)
Laravel5.8
Vue.js2.5
PHP7.2.19
LaravelのSESSION_DRIVER
はdatabase
ですが、sessions
テーブルには問題なく期待通りのレコードが入っています。
回答2件
あなたの回答
tips
プレビュー