私は、サービスコンテナにオブジェクトを登録し、設定ファイルといくつかのミドルウェアを起動するサービスプロバイダを持っているが、ミドルウェアは循環依存関係にあるようだサービスプロバイダが認証されたユーザを取得する必要があり、5つの異なるタイプが存在するので、ユーザJWTトークンからインスタンス化される前にサービスコンテナにパースされたパラメータと、ユーザのガードを渡す必要があります(申請者、Manager、Adminなど)、Auth :: guard() - > getUser()のようにnullの場合、デフォルトで申請者にデフォルト設定されるので、ガードはコンストラクタ内でAuth :: guard($ guard) - > getUser()Laravel 5.2サービスプロバイダのサービスコンテナを登録するためのミドルウェアパラメータを渡す
どうすればこのようなことを回避できますか?それが役に立ったら、LaravelのガードAPIを利用するためにtymons/JWTAuth(開発)ブランチを使用しています。
私はリファクタリングとちょうどので、私はサービスコンテナオブジェクトをインスタンス化するためにパラメータを使用することができ、すべてのサービスプロバイダを使用して直接ミドルウェア内のサービスコンテナに結合し、すべきではない、とガード。唯一の可能性のある解決策のようですが、私がこれをすべてリファクタリングする前に、よりよい方法があるかどうか尋ねたいと思っていました。
2つのサービスプロバイダを使用できますか?ミドルウェアを追加するものと、サービスコンテナにオブジェクトを登録するものもしそうなら、あなたは設定でそのパラメータをどのように渡すでしょうか?私が知っていることに基づいてこれを考えることはできません。
セッターをオブジェクトに追加することは、間違って他の場所でそれを呼び出さないようにするためのオプションではありません。
私は 'tymon/jwt-auth'を使用しています。したがって、追加しているイベントバインディングは、サービスプロバイダの起動時です。 'event() - > listen'または' $ this-> app ['Event'] - > listen'を使う方が良いでしょうか?今すぐこれを試してみましょう。 – mtpultz
あなたが使用できるバインディング・イベントのシンタックスはいくつかありますが、それらは両方とも機能するはずです。リスナーを作成し、EventServiceProviderの配列に配置することもできます – Jeff
遅れて申し訳ありません。私はこれを働かせるように見えない。 'tymon/jwt-auth'で検索すると、' tymon.jwt.valid'というイベントは存在しないようです。私はJWTGuardを使って同等のものを見つけようとするので、 'develop'ブランチを使っています。私はまた、プロバイダーをミドルウェアに設定する必要がありますので、ユーザーは 'auth:user'の場合に' getProvider'を使ってこれにアクセスすることができます。 – mtpultz