>백엔드 개발 >Golang >Negroni에서 경로별 미들웨어를 구현하는 방법은 무엇입니까?

Negroni에서 경로별 미들웨어를 구현하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-24 08:30:301048검색

How to Implement Route-Specific Middleware in Negroni?

Negroni를 사용한 경로별 미들웨어

소개

웹 서버에서 인증 메커니즘을 구현하는 것은 사용자 데이터를 보호하고 보호된 리소스에 대한 액세스를 제어합니다. 라우팅을 위해 httprouter 패키지를 사용하고 미들웨어 관리를 위해 Negroni를 사용하는 경우 인증에서 특정 경로를 제외해야 할 수도 있습니다. 이 문서에서는 Negroni에서 경로별 미들웨어를 구현하는 방법을 살펴봅니다.

문제 설명

httprouter 및 Negroni를 사용하여 서버를 설정한 경우 목표는 인증 처리기를 구현하는 것입니다. (authenticator.Get()) 및 하나의 경로(예: "/login")를 제외한 모든 경로에 적용합니다.

해결책

Negroni를 사용한 경로별 미들웨어의 경우 , 각 경로에 대해 별도의 Negroni 인스턴스를 생성해야 합니다. 제공된 예에서는 "/login" 및 "/"에 대해 별도의 Negroni 인스턴스가 생성됩니다. "/login" 경로는 loginHandler만 사용하여 인증에서 제외되는 반면, "/" 경로는 authenticater.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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.