問題タブ [laravel-middleware]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - Laravel で PHPUnit を使用して HTTP 動詞をテストする際の問題
始める前に、HTTP ステータスが 200 ではなく 500であると主張する Failed と、HTTP ステータス コードが 200 ではなく 500 であると主張する Failedをすでに確認したことをお伝えしたいと思います。名前にだまされてはいけません。それらは2つの異なる投稿です。これらの投稿はどちらも 9 か月以上前のもので、適切な回答がありません。
ルートのテストに問題があります。そこで、Laravel 5
Mac Mini で新しいプロジェクトを作成しましたOS X Yosemite 10.10.2
。APIを作っています。そこで、まず API のバックエンド部分を作り始めました。PHPUnit
このプロジェクトの TDD を実装するために使用することにしました。の私のバージョンはPHPUnit
です4.0.20
。私は実行中で、コマンド ライン ツールでPHP 5.5.14
パッケージ化されたサーバーを使用しています。Laravel
artisan
さて、サーバーに接続できることを確認することから始めました。したがって、私の最初のテストは次のようになります。
これは問題なく通過します。しかし、POST リクエストに移ると失敗しました。これは私の2番目のテストがどのように見えるかです:
このテストは失敗します。出力は次のようになります。
私の routes.php ファイルには、次のルートが登録されています。
私の MessagesController には、必要なすべてのメソッドがあります。
というわけで、とりあえず、HTTP動詞に関係なく、 get を取得する必要があります'response'
。ここで、curl を使用してテストを検証することにしました。
これにより、Laravel 'Oops!' が返されます。ページ。確かにある種のサーバーエラーがありますが、何を探すべきかわかりません。アプリケーション フローは良さそうに見えますが、明らかに機能していません。私のLaravelログからのスタックトレースは次のとおりです。
私はLaravelにかなり慣れていないので、スタックトレースを実際に掘り下げて使用して、何が問題なのかを理解する方法がわかりません。なしでもこれを試しましRoute::resource
たが、これで状況が緩和されることはありません。GET は問題なく動作しますRoute::get
が ( )、POST ( Route::post
) でも同じ 500 エラーが発生します。.../compiled.php の行 2375 を含む関数 (スタック トレースの先頭でスローされた例外から) は、Laravel によって生成され、次のようになります。
その時点で、実際にはデータを送信していなかったので、POST テストを編集しようとしました。だからここに私の修正された2番目のテストがあります:
同じエラー メッセージが表示されます。シンプルなものが欠けているような気がしますが、理解できません。どんな助けでも大歓迎です。
laravel-5 - Laravel 5:ミドルウェアからコントローラーにデータを渡すことができません
コントローラーに GET メソッドで ajax リクエストを送信しています
ミドルウェア:
HomeController の index() メソッドで $request を返そうとしていますが、ページでエラーがスローされます
私は単に$request
HomeControllerに戻っています
処理を続行できるように、リクエスト変数を HomeController@index に渡すにはどうすればよいですか?? いろいろな方法を試して疲れました...
php - Route::group 以外の Laravel ミドルウェア
管理セクションのグループ ルートを作成し、ログインとログアウトを除くすべてのパスにミドルウェアを適用しようとしています。
私がこれまでに持っているものは次のとおりです。
上記のセットアップでミドルウェアの例外を宣言するにはどうすればよいですか?
laravel - Laravel 5 - ミドルウェアをコントローラー名前空間に割り当てる
Laravel 5 Web サイトの管理パネルへのアクセスを許可する前に、ユーザーの ACL チェックを行う必要があります。名前空間内のコントローラ グループ全体に対してこれを行う最善の方法は何App\Http\Controllers\Admin\*
ですか? 最終的に、私はこれを行うための「設定して忘れる」方法を探しています。これまでのところ、ミドルウェアが最良の選択肢のようです。
最初のアイデアは、ミドルウェアを管理ルートに割り当てることでしたが、これは他の非管理ルートがコントローラーにアクセスすることを妨げません。これは、ルートが引き続き管理コントローラをターゲットにして、ACL チェックをバイパスできることを意味します。
次のアイデアは、コントローラーのコンストラクターに割り当てを挿入することでしたが、これには追加のコントローラーごとにミドルウェアを明示的に含める必要があります。これにより、開発者はミドルウェアを含める必要があることを知る必要があり、ミドルウェアを完全に見逃す可能性があります。これは、1 つのベース コントローラーをすべての管理コントローラーの親として使用する場合にも当てはまります。これは、開発者がベース コントローラーを拡張する必要があることを知る必要があるためです。今のところ、これが最善の解決策のようです。
これにより、質問に戻ります。ミドルウェアをコントローラーのワイルドカード名前空間に割り当てることはできますApp\Http\Controllers\Admin\*
か? または、ACL チェックをすべての管理コントローラーに明示的に割り当てる必要がないようにするためのより良い方法はありますか?
laravel - Laravelミドルウェアは永久にリダイレクトします
誰でもミドルウェアを手伝ってもらえますか? 私は無限のリダイレクトを受けており、今から 1 週間夢中になっています。
コードをもう一度更新しましたが、アイデアを永遠にリダイレクトする問題がまだありますか?
php - Laravel 5 ミドルウェアを使用して、パッケージがアプリのルートをオーバーライドできるようにすることはできますか?
app/Http/routes.php で定義されたルートをパッケージ内のルートでオーバーライドできるようにしたいと考えています。
たとえば、 app/Http/routes.php では、次のようになります。
これを /vendor/author/package/src/Http/routes.php で定義できるようにしたい:
app/Http/routes.php ファイルが最初にロードされるため、パッケージではなくその中のルートが使用されます。
Laravel 4 では、App::before または App::after を使用してこれを行い、それらに優先順位を付けます。
パッケージルートのように:
Laravel 5でこれを達成する方法がわかりません。これを見つけましたhttps://mattstauffer.co/blog/laravel-5.0-middleware-filter-styleが、それを使用してやりたいことを行う方法がわかりません.
編集:これを行うLaravel 4の方法では、この優先度をルートごとに設定できるため、アプリの前にすべてのパッケージルートをロードするだけではありません。
routing - Laravel 5 で App::before() フィルタを実装するにはどうすればよいですか?
Laravel 4.2では、URLに基づいてEloquentモデルとテーブルを設定するフィルターの前にこれがありました(admin.example.comとexample.com)
これが私のフィルターコードです:
laravel 5でこのためのミドルウェアを作成しようとしましたが、次のコードがあります:
私の routes.php ファイルでは、次のように auth.model 設定に基づいて呼び出されるコントローラーを設定しています。
私が見つけたのは、ミドルウェアの前にルートがすべて読み取られるため、Config::set() を介して行おうとしている変更が行われていないことです。auth.php 構成ファイルに設定されている値のみを取得しています。
Laravel 5でこれを行うにはどうすればよいですか?
laravel-5 - ミドルウェアを一時的に無効化/バイパスする
私のアプリケーションでは、OAuth2-Server ( oauth2-server-laravel ) をカスタム認証パッケージ ( Sentinel by Cartalyst ) と組み合わせて実装しました。
私のroutes.phpでは:
そのため、リクエストは認証ヘッダーを提供する必要があります。そうしないと、アプリケーションは OAuthException で終了します。
今、私は自分のコントローラーをユニットテストしたいと思っています。そのため、テストごとに OAuth セッションとアクセス トークンをデータベースにシードする必要があります。call()
次に、のメソッドを上書きしTestCase
、HTTP-Authorization ヘッダーを Bearer Token で設定します。
ミドルウェアを無効化またはバイパスする方法はありますか (私の場合は単体テスト用です)?
Laravel 4 ではルート フィルターと呼ばれていましたが、いずれにせよテスト環境では無効にされていました。で手動で有効/無効にすることもできますRoute::enableFilters()
。