質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

1回答

823閲覧

[laravel]axiosでPOSTする時にAuth認証(user_idの取得)をする方法

marutto

総合スコア32

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2020/01/23 12:40

laravel5.8,vue.js2.5,axiosで非同期でメッセージを投稿する機能を実装中です。

axiosでPOSTしているのですが、
以下のエラーが表示され困っています。

・デベロッパーツールで確認したエラー内容

"SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value

上記から、user_idの初期値が入っていないことが分かります。

controller内ではユーザー情報を取得してレコード情報に入れるメソッドを使用したのですが、
axiosでPOSTする際には、Auth、もしくは$request->userが使用できません。

・API/Impressionコントローラー内の処理(storeアクション)

public function store(StoreImpressionsRequest $request) { $message = $request->all(); $message['user_id'] = $request->user()->id; // $message['user_id'] = Auth::id(); $impression = Impression::create($message); return response()->json($impression); }

また、ルーティングはweb.phpの方に書いています。

Route::prefix('api')->group(function () { Route::apiResource('/impressions', 'API\ImpressionController'); });

vue(vuex)側のメソッドは以下

async doMessage({ commit }, msgData) { console.log("送信するデータ:" + JSON.stringify(msgData)); await axios .post("/api/impressions", { book_id: msgData.book_id, msg: msgData.msg, secret: msgData.secret }) .then(response => { console.log("データ送信完了"); console.log(response); }) .catch(error => { console.log("送信失敗" + error); }); }

上記コメントアウトにも書かれている通り、Authも試してみたのですが、解決できず。
お手数おかけしますが、アドバイスいただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

apiの認証方法はデフォルトでtokenドライバになっているのでsessionドライバに変えてみてはどうでしょうか?

投稿2020/01/23 13:36

mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mikkame

2020/01/23 13:36

config/auth.phpにて設定されているはず
marutto

2020/01/23 15:04

別の質問に引き続き、アドバイスありがとうございます! config/auth.phpのapi driver をsessionに変えてみたのですが変わらずでした。 bootstrap.jsではXSRFトークンを読み込んでいますし、レスポンス情報内にあるリクエストヘッダでの読み込みも確認できているのですが・・・。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問