解決したい問題:レスポンスでユーザーデータを返したいのに,現状はログイン後のリダイレクト先のHTMLデータが返ってくる.
目標:Laravel標準のログイン機能をAPIで操作したいので,ログイン後のレスポンスでユーザーデータを返すようにする.
現状のreponse.dataは以下の通りです.
HTML
1"<!DOCTYPE html> 2<html lang="ja"> 3 4<head> 5 <!-- 中略 --> 6</head> 7 8<body> 9 <!-- 中略 --> 10</body> 11 12</html>"
状況:以下をApp/Http/Controllers/Auth/LoginController.php/LoginController.phpに追記した.
PHP
1 /** 2 * The user has been authenticated. 3 * 4 * @param \Illuminate\Http\Request $request 5 * @param mixed $user 6 * @return mixed 7 */ 8 protected function authenticated(Request $request, $user) 9 { 10 return new Response('ok', 204); 11 }
レスポンスを"Response('ok', 204)"としているのは,単純に$userにしても上手く動かなかったので,とりあえずokで確認するためです.
考察:AuthenticatesUsersトレイトの$this->authenticated($request, $this->guard()->user())が動いてない?
PHP
1 /** 2 * Send the response after the user was authenticated. 3 * 4 * @param \Illuminate\Http\Request $request 5 * @return \Illuminate\Http\Response 6 */ 7 protected function sendLoginResponse(Request $request) 8 { 9 $request->session()->regenerate(); 10 11 $this->clearLoginAttempts($request); 12 13 if ($response = $this->authenticated($request, $this->guard()->user())) { 14 return $response; ← これが欲しい 15 } 16 17 return $request->wantsJson() 18 ? new Response('', 204) 19 : redirect()->intended($this->redirectPath()); ← これが返ってきてそう 20 }
挙動を見るに,authenticatedのオーバーライドができていないのかなという見当は付いているのですが,何故なのか全くわかりません...
Laravelにお詳しい方,お力添えをいただけますと幸いです.
よろしくお願い致します.
環境
Laravel Framework 7.25.0
PowerShell
1> php artisan ui vue --auth
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。