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

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

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

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

Laravel 5

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

Q&A

解決済

2回答

7161閲覧

Vue.js+Laravelでログインがうまくいかない

moko888

総合スコア20

Vue.js

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

Laravel 5

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

0グッド

2クリップ

投稿2019/02/01 11:49

現在、vue.js+laravelの勉強のため、
Vue + Vue Router + Vuex + Laravelで写真共有アプリを作ろう
このサイトを参考にチュートリアルを進めています。

Part7:認証機能とVuex 2まで進め、ユーザーの会員登録、ログアウトはできるのですが、ログインの時のみエラーが表示されます。

エラーコード

POST http://localhost:3008/api/login 422 (Unprocessable Entity) Uncaught (in promise) Error: Request failed with status code 422 at createError (app.js?id=305a1bb11d122f08f9e4:663) at settle (app.js?id=305a1bb11d122f08f9e4:826) at XMLHttpRequest.handleLoad (app.js?id=305a1bb11d122f08f9e4:196)

ソースコードは以下に示します。

/routes/api.php

use Illuminate\Http\Request; Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); }); Route::post('/register', 'Auth\RegisterController@register')->name('register'); Route::post('/login', 'Auth\LoginController@login')->name('login'); Route::post('/logout', 'Auth\LoginController@logout')->name('logout');

/app/Http/Controllers/Auth/LoginController.php

<?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use Illuminate\Foundation\Auth\AuthenticatesUsers; use Illuminate\Http\Request; // ★ 追加 class LoginController extends Controller { use AuthenticatesUsers; protected $redirectTo = '/home'; public function __construct() { $this->middleware('guest')->except('logout'); } protected function authenticated(Request $request, $user) { return $user; } protected function loggedOut(Request $request) { // セッションを再生成する $request->session()->regenerate(); return response()->json(); } }

resourceファイルは、タイプミスかと思い、このサイトで公開されているgithubをダウンロードし入れ替えてみたのですが、結果は変わりませんでした。

ご回答よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

Error: Request failed with status code 422

私も同じサイトでチュートリアルを行い、同じエラーが出ました。

Laravelの status code 422 はバリデーションエラーなので、入力内容に不備があるかもしれません。

私の場合は会員登録でエラーになり、メールアドレスのフォーマットが違う、パスワードの桁数が足りないが原因でした。

RegisterController.php

php

1 /** 2 * Get a validator for an incoming registration request. 3 * 4 * @param array $data 5 * @return \Illuminate\Contracts\Validation\Validator 6 */ 7 protected function validator(array $data) 8 { 9 return Validator::make($data, [ 10 'name' => ['required', 'string', 'max:255'], 11 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 12 'password' => ['required', 'string', 'min:6', 'confirmed'], 13 ]); 14 } 15

chromeのデベロッパーツールにあるNetworkを見れば詳細なエラーメッセージが確認できます。

投稿2019/02/16 05:56

disneyduffy1118

総合スコア21

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

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

moko888

2019/02/19 07:44

上手くいきました! ありがとうございます。
guest

0

middleware('auth:api')がいらないのでは。もしくは('auth')にする。
https://github.com/MasahiroHarada/vuesplash/blob/chapter-7/routes/api.php

auth:apiはconfig/auth.php→guardsのapiのこと。
webとかapiとか同じ単語なので分かりにくいけど。

その記事ではRouteServiceProviderを変えてapi.php側もwebミドルウェアにしてるのが混乱の元。
RouteServiceProviderを見ないと気付かないことはやらないほうがいい。

「APIはapi.phpに書く」って思い込みが間違い。
APIはアプリケーションプログラミングインタフェースなんだから外部のアプリから使うルート用。
内部だけで使うならweb.phpでいい。

「json返すルートがAPI」ではない。

この作り方だと後から外部向けの公開用API作りたくなった時に困る…。

投稿2019/02/01 13:19

kawax

総合スコア10377

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

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

moko888

2019/02/02 02:07

ご回答ありがとうございます。変更してもうまくいきませんでした。 きちんとvue、laravelの仕組みを理解してからSPAに挑戦したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問