Laravel6でログイン後にユーザー情報を取得したいが、401エラーが発生しユーザー情報が返ってこない

前提

こんにちは。
初めて質問させていただきます。
現在AWS上でLaravel6とvueでspaを構築している最中です。
ログイン機能を作るため、sanctumパッケージを使用しているのですが
そのアプリでログインは成功するのですが、ログイン後にユーザー情報を表示するページに移動してもユーザー情報が返ってこず401エラーが発生します。

お忙しいところ恐縮ですが、解決策を教えていただけますでしょうか。
何卒宜しくお願い致します。

  • ディレクトリ構成

https://gyazo.com/9176f38db7ec66d160e00b5b19bbab43
このような感じでlaravelの中にvue cliのフロント部分がありapi通信で動きます。

  • アプリ作成時に使用したサイト

https://tech.cydas.com/entry/vue-laravel-mspa1
https://qiita.com/Okkun555/items/2b4f999fb310dfea933f
http://adcomsoft.jp/acs_dev/2022/04/03/docker-laravel-vue-js-%E3%81%A7%E7%B0%A1%E5%8D%98spa%E3%80%9C%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%E6%A7%8B%E7%AF%89%E3%80%9C%E7%B7%A8/

  • sanctumを導入する際、参考にしたサイト

https://codelikes.com/use-laravel-sanctum/
https://noumenon-th.net/programming/2020/05/26/sanctum/
https://zenn.dev/yudai64/articles/7caaa3c828b828
https://qiita.com/ucan-lab/items/3e7045e49658763a9566

実現したいこと

ここに実現したいことを箇条書きで書いてください。

発生している問題・エラーメッセージ

エラーメッセージ ログイン後にユーザー情報を取得するページにて 401 (Unauthorized)

該当のソースコード

php

api.php Route::middleware('auth:sanctum')->get('/user', function (Request $request) { return $request->user();});

js(vue)

login.vue login() { axios.get("/sanctum/csrf-cookie").then(response => { axios.post('/api/login', { email: this.email, password: this.password }) .then(response => { console.log(response); localStorage.setItem("auth", "ture"); this.$router.push("/about"); }) .catch(error => { this.errors = error.response.data.errors; }); }); }

env

laravelのenv SESSION_DRIVER=cookie SESSION_LIFETIME=120 SESSION_DOMAIN= SANCTUM_STATEFUL_DOMAINS=

php

auth.php 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'sanctum', 'provider' => 'users', 'hash' => false, ], ],

php

login controller public function login(Request $request) { $credentials = $request->validate([ 'email' => 'required|email', 'password' => 'required' ]); if (Auth::attempt($credentials)) { return response()->json(['message' => 'Login successful'], 200); } throw ValidationException::withMessages([ 'email' => ['The provided credentials are incorrect'], ]); }

試したこと

auth.phpのdriverをsanctumに変更した(効果なし)
.envのSANCTUM_STATEFUL_DOMAINSをherokuにデプロイしそのドメインを使ってみた。(効果なし)
api.phpに直接書くのではなく、controllerにユーザー情報を返却する処理を書いた(効果なし)
api.phpのreturn $request->userではなくreturn Auth::user()にした(効果なし)

補足情報(FW/ツールのバージョンなど)

開発環境
vue/cli 5.0.8
npm 8.19.2
node 16.15.0
laravel 6.20.44
php 7.33.3

コメントを投稿

0 コメント