>백엔드 개발 >Golang >alexedwards/scs/v2를 사용하여 세션을 추가하기 위해 http.ServeHttp를 래핑할 수 있습니까?

alexedwards/scs/v2를 사용하여 세션을 추가하기 위해 http.ServeHttp를 래핑할 수 있습니까?

PHPz
PHPz앞으로
2024-02-09 09:30:19635검색

是否可以将 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 구조체 필드를 http.listenandserve(port, handler) 에 전달하는 방법이 있습니까?

솔루션

마치 peterfunc (s *httpserver) run(sessionmanager *scs.sessionmanager) { 주소 := "127.0.0.1:8080" // httpserver를 loadandsave 미들웨어로 래핑합니다. handlerwithsessions := sessionmanager.loadandsave(들) ... }

이것은 이 메서드 외부에서 sessionmanager를 만들고 구성하는 것을 의미합니다( scs.new( )sessionmanager (使用 scs.new()),并在调用 run) run을 호출할 때 전달됩니다.
여기에서 구조에 sessionmanager 设置为 httpserver 필드를 배치할 수 있습니다.
이렇게 하면 (s *httpserver) servehttp(writer http.responsewriter, r *http.request)이(가) 해당 항목을 검색할 수 있습니다.

예:

으아악

위 내용은 alexedwards/scs/v2를 사용하여 세션을 추가하기 위해 http.ServeHttp를 래핑할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제