Web アプリケーションにユーザー認証を実装する場合、多くの場合、特定のルートを承認の必要から除外することが必要になります。この記事では、Httprouter で Negroni を使用してルート固有の認証を実現する方法について説明します。
問題ステートメント
Web サーバーは Httprouter と Negroni を利用し、ユーザー認証は OAuth によって処理されます。トークンは暗号化されたセッションに保存され、ミドルウェアを使用してトークンの存在が確認されます。ただし、ログイン ページなどの一部のルートは、この認証ミドルウェアをバイパスする必要があります。課題は、スケーラビリティを損なうことなくミドルウェアから特定のルートを除外することにあります。
解決策
ルート固有のミドルウェアを作成するには、それぞれに個別の Negroni インスタンスを作成することが重要です。ルート。これにより、どのミドルウェアを各エンドポイントに適用するかを詳細に制御できます。
たとえば、次のコード スニペットを考えてみましょう。
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")
この例では、/login は、 / はセッションと認証ミドルウェアの両方を適用します。複数の Negroni インスタンスを利用することで、ルート固有の認証を効果的かつスケーラブルに実現できます。
以上がHttprouter を使用して Negroni にルート固有の認証を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。