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

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

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

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

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Q&A

解決済

1回答

6341閲覧

axiosでPOSTした際にレスポンスが取得できない

Laxxx0214

総合スコア15

Vue.js

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

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

0グッド

0クリップ

投稿2020/06/09 09:50

前提・実現したいこと

フロントVue.js バックエンドLaravel( 同じドメイン )
Laravelの標準の認証機能を使ってログイン機能を作成中です
ログイン成功時に返ってくるuserのdataを使いたい

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

javascript

1import axios from 'axios'; 2 3export default { 4 ・・・ 5 axios.post('/login', { 6 email: this.email, 7 password: this.password, 8 }) 9 .then(function (response) { 10 console.log(response.data); 11 }) 12 .catch(function (error) { 13 console.log(error); 14 }); 15・・・

axiosを使って上記の様にしていてthenに入るんですが肝心のresponse.dataが空で返ってきてしまいます。

{data: "", status: 204, statusText: "", headers: {…}, config: {…}, …} config: {url: "/login", method: "post", data: "{"email":"taro@example.com","password":"12345678"}", headers: {…}, transformRequest: Array(1), …} data: "" headers: {cache-control: "no-cache, private", date: "Tue, 09 Jun 2020 09:37:12 GMT", server: "Apache/2.4.41 ()", status: "204"} request: XMLHttpRequest {readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, onreadystatechange: ƒ, …} status: 204 statusText: ""

試したこと

わざと間違ったアドレスとか何も入力しないでPOSTするとしっかりcatchに入るのでログインに成功はしてるけど
取得できてないのだと思われます

足りない情報ありましたら追記しますのでよろしくお願いします。

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

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

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

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

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

rururu3

2020/06/09 11:15

laravel側のlogin処理部分のソースが足りないです。よろしくおねがいします。
Laxxx0214

2020/06/10 01:16

間違えました! Laravel側は標準で備わっているログインの機能を使ってるんですがどこのソースを乗せれば良いでしょうか??
rururu3

2020/06/10 02:08

Laravel標準のを利用してカスタマイズしてないんですね…了解です。
Laxxx0214

2020/06/10 02:16

はい。。。 何か考えられる原因とかってありますかね?( ;∀;)
guest

回答1

0

ベストアンサー

Laravel標準のを利用してるということで、

LoginController.phpからtrait AuthenticatesUsersなので、
AuthenticatesUsersのソースを見ると

php

1 public function login(Request $request) 2 { 3// 略 4 if ($this->attemptLogin($request)) { 5 return $this->sendLoginResponse($request); 6 }

なのでログインできたらsendLoginResponse関数に行って

php

1 protected function sendLoginResponse(Request $request) 2 { 3 $request->session()->regenerate(); 4 5 $this->clearLoginAttempts($request); 6 7 if ($response = $this->authenticated($request, $this->guard()->user())) { 8 return $response; 9 } 10 11 return $request->wantsJson() 12 ? new Response('', 204) 13 : redirect()->intended($this->redirectPath()); 14 } 15

authenticated関数で戻り値があればそれを返すなので関数見ると

php

1 protected function authenticated(Request $request, $user) 2 { 3 // 4 }

何も返してないので

return $request->wantsJson() ? new Response('', 204) : redirect()->intended($this->redirectPath());

に行く。axiosでjson要求してると思うのでstatus204返す。のが原因。

Laravel 7.x 認証
ユーザー認証時に返されるレスポンスのより堅牢なカスタマイズが必要な場合のため
を見てカスタマイズしてください。

※質問内容にログイン成功時に返ってくるuserのdataを使いたい…って書いてますが、帰ってくるっていうのはどのように調べましたか?
※axiosでAPIアクセスだからAPIで作るべきっていうのは考慮してません。

投稿2020/06/10 02:20

編集2020/06/10 02:35
rururu3

総合スコア5545

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

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

Laxxx0214

2020/06/10 02:56

とても丁寧な解説ありがとうございます!! rururu3さんのおかげで無事解決できました(*'▽') 大変ありがとうございました!
rururu3

2020/06/10 03:15

参考されてるのみたら、registerのときは返すように処理やってるようですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問