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

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

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

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

Laravel

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

Q&A

解決済

1回答

2474閲覧

laravelでjwt認証を成功させたい

sagitarou

総合スコア7

JWT(JSON Web Token)

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

Laravel

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

0グッド

0クリップ

投稿2020/11/02 22:45

編集2020/11/02 22:53

前提・実現したいこと

laravelでjwtを使った認証機能の作成を行っています。ですが、どんな値を渡してもうまくいきません

発生している問題・エラーメッセージ

必要なコードを記入しPOSTMANでトークンが返ってくるかの検証をしているのですが、常に

html

1{ 2 "error": "Unauthorized" 3}

と返ってきます。
なぜ成功しないのか助言をいただきたいです。

該当ソースコード

PHP

1Route::group(["middleware" => "guest:api"], function () { 2 Route::post('/login', 'AuthController@login'); 3});

PHP

1class AuthController extends Controller 2{ 3 function login() { 4 $credentials = request(['email', 'password']); 5 6 if (! $token = auth("api")->attempt($credentials)) { 7 return response()->json(['error' => 'Unauthorized'], 401); 8 } 9 10 return $this->respondWithToken($token); 11 } 12 13 public function me() 14 { 15 return response()->json(auth()->user()); 16 } 17 18 protected function respondWithToken($token) 19 { 20 return response()->json([ 21 'access_token' => $token, 22 'token_type' => 'bearer', 23 'expires_in' => auth("api")->factory()->getTTL() * 60 24 ]); 25 } 26}

PHP

1'defaults' => [ 2 // 'guard' => 'web' 3 'guard' => 'api', 4 'passwords' => 'users', 5 ], 6 7 8 9 'guards' => [ 10 'web' => [ 11 'driver' => 'session', 12 'provider' => 'users', 13 ], 14 15 'api' => [ 16 // 'driver' => 'token' 17 'driver' => 'jwt', 18 'provider' => 'users', 19 'hash' => false, 20 ], 21 ],

補足情報(FW/ツールのバージョンなど)

Laravel Framework 7.22.4

参考にさせていただいた記事: https://qiita.com/tkt989/items/15b49e9ea8d31d8228ce

追記

質問文にどんな値もと書いてしまいましたが今し方passwordをハッシュ化して保存しているユーザーでのログインを試みた結果また違ったエラーが出てしまい私では解決できそうにないです

Argument 1 passed to Tymon\JWTAuth\JWTGuard::login() must be an instance of Tymon\JWTAuth\Contracts\JWTSubject, instance of Illuminate\Auth\GenericUser given, called in /Applications/MAMP/htdocs/laravel/task_app/taskback/vendor/tymon/jwt-auth/src/JWTGuard.php on line 127

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

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

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

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

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

guest

回答1

0

自己解決

自己解決しました

config/auth.phpのproviderが間違っていました。
本来

PHP

1'users' => [ 2 'driver' => 'eloquent', 3 'model' => App\User::class,

と記述すべきところを

PHP

1'users' => [ 2 'driver' => 'database', 3 'table' => 'users', 4 ],

と書いてしまっていたのが原因でした。

投稿2020/11/02 23:10

編集2020/11/02 23:11
sagitarou

総合スコア7

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問