laravelのauthを用いたログイン機能を使用しています。
普通のemail,passwordをそれぞれ打ち込みログインしようとしても、ずっとリロード状態が続いてしまいます。(リクエストを処理をしています、の文字も画面下に表示されています。)
解決したいこと: email,passwordでログイン出来るようにしたいです。
現状: 前述の記載の動きになってしまいます。だが、ホームにアクセスしたりリロードボタンを押すとログイン状態に変化します。たまにそのままログインできる時もあります。
web
1Auth::routes(['verify' => true]); 2 3/ google 4Route::get('/login/google', 'Auth\LoginController@redirectToGoogle')->name('google_login_before'); 5Route::get('/login/google/callback', 'Auth\LoginController@GoogleCallback')->name('google_login_after'); 6 7// facebook 8Route::get('/login/facebook', 'Auth\LoginController@redirectTofacebook')->name('facebook_login_before'); 9Route::get('/login/facebook/callback', 'Auth\LoginController@facebookCallback')->name('facebook_login_after');
LoginController
1<?php 2 3namespace App\Http\Controllers\Auth; 4 5use App\Http\Controllers\Controller; 6use App\Providers\RouteServiceProvider; 7use Illuminate\Foundation\Auth\AuthenticatesUsers; 8use Socialite; 9use App\User; 10use Auth; 11use Carbon\Carbon; 12use Session; 13 14class LoginController extends Controller 15{ 16 /* 17 |-------------------------------------------------------------------------- 18 | Login Controller 19 |-------------------------------------------------------------------------- 20 | 21 | This controller handles authenticating users for the application and 22 | redirecting them to your home screen. The controller uses a trait 23 | to conveniently provide its functionality to your applications. 24 | 25 */ 26 27 use AuthenticatesUsers; 28 29 /** 30 * Where to redirect users after login. 31 * 32 * @var string 33 */ 34 protected $redirectTo = RouteServiceProvider::HOME; 35 36 /** 37 * Create a new controller instance. 38 * 39 * @return void 40 */ 41 public function __construct() 42 { 43 $this->middleware('guest')->except('logout'); 44 } 45 46 public function redirectToGoogle() 47 { 48 // Google へのリダイレクト 49 return Socialite::driver('google')->redirect(); 50 } 51 52 public function redirectToFacebook() 53 { 54 // facebook へのリダイレクト 55 return Socialite::driver('facebook')->redirect(); 56 } 57 58 public function facebookCallback() 59 { 60 $fUser = Socialite::driver('facebook')->stateless()->user(); 61 $check_user = User::where(['email' => $fUser->getEmail()])->first(); 62 if($check_user) { 63 Auth::login($check_user); 64 return redirect()->route('home'); 65 } elseif($fUser->getEmail() === null) { 66 $user = new User(); 67 $user->name = $fUser->getName(); 68 Session::put('user', $user); 69 return view('auth.register')->with('say', 'ユーザーのemailを入力してください!'); 70 } else { 71 $user = new User(); 72 $now_time = Carbon::now('Asia/Tokyo'); 73 $user->name = $fUser->getName(); 74 $user->email = $fUser->getEmail(); 75 $user->email_verified_at = $now_time; 76 $user->password = \Hash::make('password'); 77 Session::put('user', $user); 78 return view('auth.address')->with('say', 'ユーザーは入力完了です!次は住所を入力してください!'); 79 } 80 81 } 82 83 public function GoogleCallback() 84 { 85 $gUser = Socialite::driver('google')->stateless()->user(); 86 $check_user = User::where(['email' => $gUser->getEmail()])->first(); 87 if($check_user) { 88 Auth::login($check_user); 89 return redirect()->route('home'); 90 } else { 91 $user = new User(); 92 $now_time = Carbon::now('Asia/Tokyo'); 93 $user->name = $gUser->getName(); 94 $user->email = $gUser->getEmail(); 95 $user->email_verified_at = $now_time; 96 $user->password = \Hash::make('password'); 97 Session::put('user', $user); 98 return view('auth.address')->with('say', 'ユーザーは入力完了です!次は住所を入力してください!'); 99 } 100 101 } 102} 103
予想、怪しいと思うところ。試したこと。
1, $this->sendLoginResponse($request)が上手く処理出来ていない?evalでどこで止まるか確認。
2, sns認証も実装しているのでどこかで処理が被っている??
3, キャッシュの削除、ターミナルとクローム。
4, シークレットウィンドウでの実行。
5, snsでログインし、ログアウトした後にemail,passwordを入力してログインしようとすると入れなくなります。それぞれ別ユーザーです。
vendor\laravel\ui\auth-backend\AuthenticatesUsers.php public function login(Request $request) { $this->validateLogin($request); // If the class is using the ThrottlesLogins trait, we can automatically throttle // the login attempts for this application. We'll key this by the username and // the IP address of the client making these requests into this application. if (method_exists($this, 'hasTooManyLoginAttempts') && $this->hasTooManyLoginAttempts($request)) { $this->fireLockoutEvent($request); eval(\Psy\sh()); return $this->sendLockoutResponse($request); } if ($this->attemptLogin($request)) { この処理の部分で止まってしまう事をevalで見つけました。 eval(\Psy\sh()); return $this->sendLoginResponse($request); } // If the login attempt was unsuccessful we will increment the number of attempts // to login and redirect the user back to the login form. Of course, when this // user surpasses their maximum number of attempts they will get locked out. $this->incrementLoginAttempts($request); eval(\Psy\sh()); return $this->sendFailedLoginResponse($request); }
どこに原因があるのかわからず止まってしまいました。
5の部分が怪しいと感じますが。。。ログアウトするときに何か処理を加えるとかでしょうか。。
どなたかお分かりになる方いましたらご教授ください、よろしくお願いいたします。
また、この情報も欲しい!と言う事であれば教えていただけると助かります。
laravel7.x
あなたの回答
tips
プレビュー