在Play中,有没有办法在路由之前应用过滤器?

时间:2014-05-09 15:12:40

标签: filter routes playframework-2.2 urlbinding

根据文档,过滤器链在请求路由后发生。在请求路由之前,有没有办法让过滤器链应用

特别是,我们希望在URL映射之前应用许多过滤器。如果我们将这些作为普通过滤器执行,要么我们不能使用路由时发生的请求绑定,要么我们必须自己在操作中执行此操作。

3 个答案:

答案 0 :(得分:0)

是的,是

onRouteRequest(Http.RequestHeader request)
Called when an HTTP request has been received.

有关详细信息,请查看此内容 https://www.playframework.com/documentation/2.2.0/api/java/play/GlobalSettings.html#onRouteRequest(play.mvc.Http.RequestHeader)

You need a class to extends GlobalSettings, 
and then override the method onRouteRequest(Http.RequestHeader request)

答案 1 :(得分:0)

来自documentation: “如果你确实需要在调用路由器之前修改请求,那么更好的方法是将你的逻辑放在Global.onRouteRequest中。”

答案 2 :(得分:0)

在较新版本的Play(例如2.6.x)中,在路由之前应用自定义逻辑的首选方法是实现自定义HttpRequestHandler(有关Java版本的文档,请参见this pageHttpRequestHandler

在许多情况下,您可以extend the default request handler并覆盖routeRequest方法。

来自the filters documentation

  

如果确实需要在调用路由器之前修改请求,那么更好的方法是将逻辑放在HttpRequestHandler中。