ホームページ > バックエンド開発 > Golang > alexedwards/scs/v2 を使用してセッションを追加するために http.ServeHttp を go でラップすることは可能ですか

alexedwards/scs/v2 を使用してセッションを追加するために http.ServeHttp を go でラップすることは可能ですか

PHPz
リリース: 2024-02-09 09:30:19
転載
632 人が閲覧しました

是否可以将 http.ServeHttp 包装在 go 中以使用 alexedwards/scs/v2 添加会话

php 編集者のZimoさん、こんにちは! alexedwards/scs/v2 を使用してセッションを追加するために Go で http.ServeHTTP をラップすることについての質問については、答えは「はい」です。 alexedwards/scs/v2 ライブラリを使用してセッションを管理し、Go コードで http.ServeHTTP をラップすることができます。このようにして、HTTP リクエストを処理するときにアプリケーションでセッションを使用するためのセッション管理機能を追加できます。これにより、認証、認可、その他のセッション関連の機能をアプリケーションに簡単に追加できます。この回答がお役に立てば幸いです。

質問内容

goで書かれた既存のhttpサーバーにセッションを追加しようとしています。次のコードがあります

リーリー

を使用してセッションを追加したい https://pkg.go.dev/github.com/alexedwards/scs/v2#sessionmanager.loadandsave

リンク内のサンプルコードは

です。 リーリー

コード例では、mux をloadandsave に渡してから、新しいハンドラーを http.listenandserve(port, newhandler) に渡します。私の場合、ハンドラーは *httpserver 構造に追加したservehttpメソッドから来ています。この例のハンドラーはマルチプレクサーからのものです。

###私はここでは新人です。私のservehttpメソッドをloadandsaveに渡し、loadandsaveから返されたハンドラを使用することは可能ですか?そうでない場合、私の例で使用されている http.server struct フィールドを http.listenandserve(port, handler) に渡す方法はありますか?

解決策

peterfunc (s *httpserver) run(sessionmanager *scs.sessionmanager) {と同じように アドレス := "127.0.0.1:8080" // httpサーバーをloadandsaveミドルウェアでラップします。 セッション付きハンドラー := sessionmanager.loadandsave(s) ... } これは、

sessionmanager がこのメソッドの外部 (scs.new() を使用) で作成および構成され、run の呼び出し時に渡されることを意味します。 そこで、
sessionmanagerhttpserver 構造体のフィールドに設定できます。 これにより、
(s *httpserver)servehttp(writer http.responsewriter, r *http.request) がそれを取得できるようになります。 ###例えば:### リーリー

以上がalexedwards/scs/v2 を使用してセッションを追加するために http.ServeHttp を go でラップすることは可能ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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