Negroni にルート固有のミドルウェアを実装するにはどうすればよいですか?

DDD
リリース: 2024-10-24 08:30:30
オリジナル
965 人が閲覧しました

How to Implement Route-Specific Middleware in Negroni?

Negroni を使用したルート固有のミドルウェア

はじめに

Web サーバーに認証メカニズムを実装することは、ユーザー データとセキュリティを保護するために重要です。保護されたリソースへのアクセスを制御します。ルーティングに httprouter パッケージを使用し、ミドルウェア管理に Negroni を使用する場合、認証から特定のルートを除外する必要が生じる場合があります。この記事では、Negroni でルート固有のミドルウェアを実現する方法について説明します。

問題ステートメント

httprouter と Negroni を使用したサーバー設定がある場合、目的は認証ハンドラーを実装することです。 (authenticator.Get()) し、1 つを除くすべてのルート (「/login」など) に適用します。

ソリューション

Negroni を使用したルート固有のミドルウェアの場合、ルートごとに個別の Negroni インスタンスを作成する必要があります。提供された例では、「/login」と「/」に対して個別の Negroni インスタンスが作成されます。 「/login」ルートは、loginHandler のみを使用して認証から除外されますが、「/」ルートは、authenticator.Get() と IndexHandler の両方を利用します。

実装

<code class="go">router := httprouter.New()
router.Handler("GET", "/login",
    negroni.New(negroni.HandlerFunc(loginHandler)))
router.Handler("GET", "/",
    negroni.New(authenticator.Get(),
    negroni.HandlerFunc(indexHandler)))

server := negroni.Classic()
server.UseHandler(router)
server.Use(sessions.Sessions("example-web-dev",
        cookiestore.New([]byte("some secret"))))
server.Run(":3000")</code>
ログイン後にコピー

重要なポイント

  • loginHandler と IndexHandler は func(http.ResponseWriter, *http.Request, http.HandlerFunc) 署名を実装する必要があります。
  • すべてのルートは negroni.Classic() からミドルウェアを継承し、セッション ミドルウェアはサーバーに追加されます。
  • ルート固有のミドルウェアは、ルートごとに異なるミドルウェア スタックを使用して Negroni インスタンスをネストすることによって適用されます。

以上がNegroni にルート固有のミドルウェアを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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