【问题标题】:Detect protocol with finatra使用 finatra 检测协议
【发布时间】:2019-09-24 17:01:07
【问题描述】:

您好,我是 Finatra 的新手,想知道是否有办法验证请求是使用 https 协议发出的?

【问题讨论】:

    标签: https finatra


    【解决方案1】:

    如果您想始终使用 HTTPS,您可以禁用 http server 服务器

    import com.twitter.finagle.Http
    import com.twitter.finatra.http.HttpServer
    import com.twitter.finatra.http.routing.HttpRouter
    
    object ExampleHttpsServerMain extends ExampleHttpsServer
    
    class ExampleHttpsServer
      extends HttpServer
      with Tls {
    
      override val defaultHttpPort: String = "" // disable the default HTTP port
      override val defaultHttpsPort: String = ":443"
    
      override def configureHttp(router: HttpRouter): Unit = {
        router
          .add[ExampleController]
      }
    }
    

    但是,如果您希望某些特定的控制器或路由检查它是否是 https,例如登录只能通过 https 使用,那么您可以定义 Filters 例如:

    每条路线

    class ExampleController @Inject()(
      exampleService: ExampleService
    ) extends Controller {
    
      filter[ExampleFilter].get("/ping") { request: Request =>
        "pong"
      }
    
      filter[ExampleFilter]
        .filter[AnotherExampleFilter]
        .get("/name") { request: Request =>
        response.ok.body("Bob")
      }
    
      filter(new OtherFilter).post("/foo") { request: Request =>
        exampleService.do(request)
        "bar"
      }
    }
    

    每个控制器

    import DoEverythingModule
    import ExampleController
    import ExampleFilter
    import com.twitter.finagle.http.Request
    import com.twitter.finatra.http.filters.AccessLoggingFilter
    import com.twitter.finatra.http.routing.HttpRouter
    import com.twitter.finatra.http.{Controller, HttpServer}
    
    object ExampleServerMain extends ExampleServer
    
    class ExampleServer extends HttpServer {
    
      override val modules = Seq(
        DoEverythingModule)
    
      override def configureHttp(router: HttpRouter) {
        router
          .add[ExampleFilter, ExampleController]
      }
    }
    

    如果您检查 SimpleFilter 的所有实现,您可能会发现一些过滤器可以重复使用或作为过滤器的基础。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 2015-07-10
      • 2019-01-08
      • 1970-01-01
      相关资源
      最近更新 更多