1

Password Grant Tokensを使用してモバイルアプリケーション用の API を構築しています。ユーザーがアプリケーションにログインしようとすると、クライアントはアクセス トークンの要求を送信します。

ユーザーがメールに送信されたリンクを使用してアカウントを確認していない可能性があります。クエリに条件を追加し、それに応じてエラー応答を提供したいと考えています。現在、Passport がトークン部分を管理しているため、直接行うことはできません。

これはどのように解決できますか?ユーザー アカウントに問題がある場合、トークン リクエストに飛び込んでカスタム レスポンスを送信するにはどうすればよいですか? それ以外の場合はトークンを送信し続けます。

4

3 に答える 3

3

入力データを認証サービス プロバイダーに送信する前にミドルウェアを追加し、データベースに対して受信する電子メールを確認します。電子メールが検証された場合は、認証サービス プロバイダーに送信してリクエストを続行します。それ以外の場合は、任意のカスタム メッセージでエラー応答を返します。

人々はまだこの答えを探していて、このページに来ています。独自のoauth/tokenルートを定義するのも 1 つの方法かもしれませんが、データをコントローラーに送信する前に変更を行う目的で作成されたミドルウェアを使用する場合は、より論理的です。

ミドルウェアを作成します。php artisan make:middleware MyMiddleware

ミドルウェアをカーネルに登録し、認証ミドルウェアの前に作成します

protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,//auth middleare
        'your_middleware_identifier'=>\App\Http\Middleware\MyMiddleware::class,
    ];


    /**
     * The application's middleware priority array.
     *
     * These middlewares will be executed in way they are listed.
     *
     * @var array
     */
    protected $middlewarePriority = [
        \App\Http\Middleware\MyMiddleware::class,
        \Illuminate\Auth\Middleware\Authenticate::class,
    ];

最後に、パスポートルートがある AuthServiceProvider.php ファイルでミドルウェアを使用できます: boot() 関数で

public function boot(Request $request)
    {
        $this->registerPolicies();

        Route::group(['middleware' => 'your_middleware_identifier'], function () {
            Passport::routes();
        });
    }

役立つことを願っています

于 2017-01-03T10:52:49.400 に答える