Go/Gin でミドルウェア チェーンを停止できません

王林
リリース: 2024-02-09 13:15:28
転載
500 人が閲覧しました

无法停止 Go/Gin 中的中间件链

PHP の世界では、ミドルウェア チェーンは一般的な開発モデルであり、リクエストの処理、検証および承認操作などの実行に役立ちます。ただし、Go Web フレームワークである Gin では、ミドルウェア チェーンの動作が少し異なります。停止できないミドルウェア チェーンを使用します。つまり、前のミドルウェアにエラーがあるかどうかに関係なく、各ミドルウェアが実行されます。この設計によりコードは複雑になりますが、柔軟性とカスタマイズ性も向上します。この記事では、PHP エディタ Apple による Jin フレームワークのミドルウェア チェーンの動作原理と使用法を詳しく紹介します。

質問内容

リクエストを進める前にセッションを確認したいのですが、セッションを確認するためのミドルウェアがあります。これがエンドポイントです:

リーリー

これは checksession() ミドルウェアです。値はプレースホルダー atm:

リーリー ###ログ:

まず、

"/" ルートにアクセスします。これは /profile/:pid エンドポイントにリダイレクトされ、「無効な」セッションの場合は # にリダイレクトされます ## /sign-in エンドポイント。 /sign-in エンドポイントに再ルーティングされていますが、c.next() をクリックしなくても、/profile/:pid エンドポイントは実行を完了します。 これらを

if-else

ブロックに配置して、c.redirect()c.next() の 1 つだけが実行されるようにしてください。 #回避策

このエラーは、ミドルウェア チェーンを手動で中止しなかったことが原因で発生します。

c.Redirect()

はミドルウェア チェーンを停止しません。手動で

c.Abort() を呼び出して、残りのハンドラーが実行されないようにする必要があります。 c.Abort()

ツールヒント:

中止により、保留中のハンドラーが呼び出されなくなります。これによって現在のハンドラーは停止されないことに注意してください。現在のリクエストが承認されていることを検証する承認ミドルウェアがあるとします。認証が失敗した場合 (例: パスワードの不一致)、Abort を呼び出して、このリクエストの残りのハンドラーが呼び出されないようにします。

以上がGo/Gin でミドルウェア チェーンを停止できませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!