2017-03-14 16 views
0

APIルートをLaravel 5.4で定義しています。使用してAUTHこれらのルートのほとんどは、認証を必要とし、私はこれを行うことができるようにしたいと思い、次のいずれか1つのLaravelルートでセッション認証またはトークン認証を使用できますか?

  • トークン認証すなわちauth:api
  • またはセッション/クッキー認証を使用して(異なるドメイン上の他のWebアプリケーションで使用されます)すなわちauthは、主要なWebアプリケーションにおけるAJAX要求を

はこれを行うことが可能であり、または私は別のルートグループのプレフィックスか何かで、二回私のすべてのルートを定義する必要がありますか?たとえば、すべてセッション認証 APIエンドポイントは/ajax/api-endpointのようになり、すべてトークン認証 APIエンドポイントは/api/api-endpointのように見えますか?

私は使用しているauthメソッドにかかわらず、/api/api-endpointにアクセスしたいと思います。次のように両方のauthauth:apiミドルウェアを指定

はLaravelだけではなく、いずれかを要求するので、続く前に認証の両方の方法を必要とするために表示されます。

Route::get('api/user', '[email protected]')->middleware(['auth', 'auth:api']);

+0

routes/api.phpを試しましたか? –

+0

ええ、 'api.php'で定義されたルートには/ apiのURLが自動的に前置されているので、' web.php'に/ ajax/*ルートを置かなければなりませんでした。笑 –

答えて

2

web.phpRoute::get('api/user', '[email protected]')中にこのルートRoute::get('ajax/user', '[email protected]')を定義しますapi.phpしたがって、コントローラの正確な同じメソッドを両方のルートで使用することができ、コントローラメソッドでは、を使用して認証が行われても、現在のユーザを取得するのにauth()を使用しますまたはauth auth()のみが、どちらの方法でも認証されたユーザーを提供します。

グループに適切なミドルウェアをグループに適用して、web.phpapi.phpにグループがあるものとします。

+0

あなたの答えをありがとう。基本的には、任意の2番目のURLを作成するのを避ける方法がないので、2つの認証方法を使用できます。 –

+0

私はあなた自身のミドルウェアを定義することができ、そのミドルウェアであなたの自己認証をWebドライバかapiドライバのどちらかでチェックして、ユーザがそのリクエストのためにユーザを設定してミドルウェアで次にコールすると、ルートとラッパーミドルウェアの生の認証 –

+0

ああ、それは理にかなっている - 私はそれを行うと思うので、2つのURLを持つほうがはるかに簡単:) –

関連する問題