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

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

新規登録して質問してみよう
ただいま回答率
85.48%
JWT(JSON Web Token)

JWT(JSON Web Token)とは、JSONをベースとしたアクセストークンの仕様。電子署名付きのURL safeなJSONのことを指します。電子署名が付いているため、改ざんをチェックできる点がメリットです。

Laravel

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

0回答

1997閲覧

laravelでjwtのauthを導入してから通常のauthがおかしくなった

7122rz

総合スコア9

JWT(JSON Web Token)

JWT(JSON Web Token)とは、JSONをベースとしたアクセストークンの仕様。電子署名付きのURL safeなJSONのことを指します。電子署名が付いているため、改ざんをチェックできる点がメリットです。

Laravel

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2019/08/28 12:18

編集2019/08/28 12:39

題名の通り、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もともとの設定をいじってみたりはしましたが、リダイレクトループからは抜け出せませんでした。

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

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

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

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

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

mix-peach

2019/08/29 03:05

ミドルウェアの、RedirectIfAuthenticated は、どこで使ってるものですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問