題名の通り、jwtを導入してからもともと入れていたauthの効き方がおかしくなってしまいました。
具体的にはjwtを導入後、auth.phpのguardのdefaultをapiに変更したのですが、それが原因のようで
もともとのauthの設定(ログイン→遷移)がおかしくなっています。
ちなみに、guardのdefaultをwebに戻した場合は希望通りの遷移をしてくれます。
以下 auth.phpのコードです。
```php
'defaults' => [
'guard' => 'api',
'passwords' => 'users',
],
もともとはログイン画面(以下 login と呼びます)で正しい値を入力したら、ログイン後のメニュー画面(以下 home と呼びます)に飛ぶはずだったのが、 guardを変更してから、正しい入力をしても、login → home → home → home 、、、とリダイレクトループしまいます。(ちなみに、間違った入力をしていた場合はバリデーションエラーが返ってきて表示されます。) guardというのは、まずdefault(api)のルーティング情報を見て、それから、webのルーティング情報を見てコントローラを実行しているものだと思っているので、guardのdefault値で処理がおかしくなるのは意味がわからないのですが、私の認識がずれているのでしょうか? ルーティング情報を記載しているweb.phpでは、 Auth:routes();を記載し、 homeに渡る処理として、 ```php Route::get('/home', 'HomeController@home');
を書いています。
HomeControllerの中身は以下の通りです。
php
1<?php 2 3namespace App\Http\Controllers; 4use App\User; 5use Illuminate\Http\Request; 6use DB; 7 8class HomeController extends Controller 9{ 10 /** 11 * Create a new controller instance. 12 * 13 * @return void 14 */ 15 public function __construct() 16 { 17 $this->middleware('auth:web'); 18 } 19 20 /** 21 * Show the application dashboard. 22 * 23 * @return \Illuminate\Contracts\Support\Renderable 24 */ 25 public function home() 26 { 27 $users = User::get(); #ログインユーザー情報を取得します。 28 return view('home', ['users' => $users]); 29 } 30} 31
追記
loginController@loginで、認証後にhomeに遷移する処理を書いてます。
php
1<?php 2 3namespace App\Http\Middleware; 4 5use Closure; 6use Illuminate\Support\Facades\Auth; 7 8class RedirectIfAuthenticated 9{ 10 /** 11 * Handle an incoming request. 12 * 13 * @param \Illuminate\Http\Request $request 14 * @param \Closure $next 15 * @param string|null $guard 16 * @return mixed 17 */ 18 public function handle($request, Closure $next, $guard = null) 19 { 20 if (Auth::guard($guard)->check()) { 21 return redirect('/home'); 22 } 23 24 return $next($request); 25 } 26 27} 28
<?php namespace App\Http\Controllers\Auth; use Illuminate\Http\Request; use App\User; use App\Http\Controllers\Controller; use Illuminate\Foundation\Auth\AuthenticatesUsers; class LoginController extends Controller { /* |-------------------------------------------------------------------------- | Login Controller |-------------------------------------------------------------------------- | | This controller handles authenticating users for the application and | redirecting them to your home screen. The controller uses a trait | to conveniently provide its functionality to your applications. | */ use AuthenticatesUsers; /** * Where to redirect users after login. * * @var string */ protected $redirectTo = '/home'; /** * Create a new controller instance. * * @return void */ public function __construct() { $this->middleware('guest:web')->except('logout'); } public function username(){ return 'name'; } }
このリダイレクトループの原因を教えていただきたいです。
追記2
Karnel.phpで、CSRFトークンの処理をコメント化して、カットしています
試したこと
上記に書いたことが大まかには全てです。
authもともとの設定をいじってみたりはしましたが、リダイレクトループからは抜け出せませんでした。
あなたの回答
tips
プレビュー