2016-12-15 9 views
0

auth:apiミドルウェアを使用してLaravel 5.3でAPI認証を設定するには、このtutorialの手順に従っています。api_tokenを使用したLaravel 5.3とAPI認証

すべては私が成功した私のAPIにアクセスするために、私は、現在ログインしているユーザーにリンクされているトークンではなく、私のusers表にすべてのユーザーのためのAPIトークンを提供する必要があることを発見していますから離れて正常に機能していますこのミドルウェアはステートレスであるため、これが予想される動作ですか?私はAdLdap2を使用してユーザーを認証していますが、上のチュートリアルの手順に従っている間に何が間違っているのか分かりません。

私はまた、APIトークンの検証を扱うが、トークンがログインしているユーザーのそれと一致して確実に任意のロジックを見ることができないTokenGuardを見てきました。

をすべてのヘルプははるかに高く評価されます。

答えて

0

認証は期待どおりに機能すると思います。 auth:apiが行う唯一のことは、あなたが保護されたルートにアクセスするために認証されていることを確認することです。特定のルートを1人のユーザーのみに保護したい場合は、Gates

などのようにユーザーにアクセスするルートがあり、ログインしているユーザーにアクセスを許可したい場合は、ゲートを追加できます。

ルート/ web.php

Route::get('/user/{id}', function ($id) { 
    $userYourTryingToView = User::find($id); 

    if (Gate::allows('get-user', $userYourTryingToView)) { 
     // The user is allowed to access herself, return the user. 
     return response()->json($userYourTryingToView); 
    } 

    // User is not authenticated to view some other user. 
    return response('Unauthenticated', 403); 
}); 

、アプリ/プロバイダ/ AuthServiceProvider.php

/** 
* Register any authentication/authorization services. 
* 
* @return void 
*/ 
public function boot() 
{ 
    $this->registerPolicies(); 

    Gate::define('get-user', function ($authenticatedUser, $userYourTryingToView) { 
     return $authenticatedUser->id == $userYourTryingToView->user_id; 
    }); 
} 
+0

私のユースケースは、すべてのAPIのルートを確保することに集中しているが一致するAPIトークンを使用してアクセスされます現在認証されているユーザーのものです。あなたはこれのために働くゲートの例を提供できますか? – u01jmg3

関連する問題