ホームページ  >  記事  >  バックエンド開発  >  laravel dingo/api は jwt-auth 認証を追加します

laravel dingo/api は jwt-auth 認証を追加します

不言
不言オリジナル
2018-07-09 09:48:543164ブラウズ

この記事では、laravel dingo/api への jwt-auth 認証の追加について主に紹介します。ある参考値があります。今、共有します。困っている友達は参考にしてください。

laravel について学びましたdingo 以前 /apiAPI を誰でも利用できるように、シンプルな API を作成します。API への呼び出しを表示および制限するにはどうすればよいですか? jwt-auth を使用して、JSON Web トークン認証を確認できます。

1. まず jwt-auth プラグインをインストールし、composer を使用してコマンド ラインでインストールします。

composer require tymon/jwt-auth '0.5.*'

2. 次に、publish

php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"

/config/

に jwt.php ファイルが生成されます。 3. キーを生成します

php artisan jwt:generate

コマンドの実行に失敗した場合は、/config/jwt.php ファイルでchangemeによって設定されたキーを変更できます

'secret' => env('JWT_SECRET', 'changeme'),

4. /app/Api/Controllers/HelloController.php を

<?php

namespace App\Api\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
//添加jwt-auth认证
use JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;

class HelloController extends Controller
{
    public function index()
    {
        return &#39;{content:Helloworld!}&#39;;
    }
//添加jwt-auth认证
  	public function authenticate(Request $request)
    {
        // grab credentials from the request
        $credentials = $request->only(&#39;email&#39;, &#39;password&#39;);

        try {
            // attempt to verify the credentials and create a token for the user
            if (! $token = JWTAuth::attempt($credentials)) {
                return response()->json([&#39;error&#39; => &#39;invalid_credentials&#39;], 401);
            }
        } catch (JWTException $e) {
            // something went wrong whilst attempting to encode the token
            return response()->json([&#39;error&#39; => &#39;could_not_create_token&#39;], 500);
        }

        // all good so return the token
        return response()->json(compact(&#39;token&#39;));
    }
}

に変更します 5ルーティングを追加します (/routes/web .php)

$api->post(&#39;auth&#39;, &#39;App\Api\Controllers\HelloController@authenticate&#39;);

6. ルーティングをテストします: phpArtisan api:routes、次のプロンプトが表示されたら、それを意味します。は正しいです

アクセス URL: ***.com/api/auth トークンが追加されていないためエラーが表示されます

#hellocontrol と Routes を再変更します

<?php

namespace App\Api\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;

class HelloController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */


    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return &#39;{content:Helloworld!}&#39;;
    }
  	public function authenticate(Request $request)
    {
        // grab credentials from the request
        $credentials = $request->only(&#39;email&#39;, &#39;password&#39;);

        try {
            // attempt to verify the credentials and create a token for the user
            if (! $token = JWTAuth::attempt($credentials)) {
                return response()->json([&#39;error&#39; => &#39;invalid_credentials&#39;], 401);
            }
        } catch (JWTException $e) {
            // something went wrong whilst attempting to encode the token
            return response()->json([&#39;error&#39; => &#39;could_not_create_token&#39;], 500);
        }

        // all good so return the token
        return response()->json(compact(&#39;token&#39;));
    }
  //添加user
  	public function user()
    {
      JWTAuth::parseToken();
      $user = JWTAuth::parseToken()->authenticate();
      return $user;
    }
}

name('home');

$api = app('Dingo\Api\Routing\Router');
$api->version('v1', function ($api) {
    $api->get('helloworld', 'App\Api\Controllers\HelloController@index');
  $api->post(&#39;auth&#39;, &#39;App\Api\Controllers\HelloController@authenticate&#39;);
  $api->get('auth', 'App\Api\Controllers\HelloController@user');
});

Google Chrome postman プラグインを使用してトークンを取得します。これは post メソッドであることに注意してください。手順は次のとおりです。以下の図に示す

取得したトークンをコピーし、2 番目のステップのユーザー検証トークンに貼り付けます。下の図 5 は、先ほど登録したユーザーです。

. 上記がこの記事の全内容です。皆さんの学習に役立つことを願っています。ヘルプについては、PHP 中国語 Web サイトにさらに関連したコンテンツがあることに注意してください。

関連推奨事項:

Passportを使用してLaravel5.5でAuth認証を実装する方法の説明

コンポーザー自動の実装Laravelフレームワークへの読み込み 詳細説明

以上がlaravel dingo/api は jwt-auth 認証を追加しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。