文档

§IP 过滤器

Play 提供了一个 IP 过滤器,它允许或拒绝访问资源,具体取决于请求的 IP 地址,并使用白名单和黑名单进行配置。

§启用 IP 过滤器

要启用 IP 过滤器,请将其添加到 application.conf

play.filters.enabled += play.filters.ip.IPFilter

§白名单 IP 地址

如果白名单不为空,则只有当请求的 IP 地址存在于白名单中时,才会允许该请求。

# IPv4 and IPv6 adresses allowed in different notations
play.filters.ip.whiteList = [ "192.168.0.1", "8f:f3b:0:0:0:0:0:ff", "2001:cdba::3257:9652", "2001:cdba:0000:0000:0000:0000:3257:9653" ]

§黑名单 IP 地址

黑名单仅在白名单为空时有效。如果黑名单不为空,则当请求的 IP 地址存在于黑名单中时,该请求将被拒绝。

# The black list is only active if the whitelist is empty,
# otherwise it will be ignored.
# IPv4 and IPv6 adresses allowed in different notations
play.filters.ip.blackList = [ "192.168.0.1", "8f:f3b:0:0:0:0:0:ff", "2001:cdba::3257:9652", "2001:cdba:0000:0000:0000:0000:3257:9653" ]

§HTTP 状态码

IP 过滤器阻止的禁止请求的默认 HTTP 状态码为 403 Forbidden

您可以使用以下配置自定义返回的 HTTP 状态码

# 401 Unauthorized
play.filters.ip.accessDeniedHttpStatusCode = 401

§使用路由修饰符选择性地禁用过滤器

当使用 Play 附带的默认配置并且您定义了白名单或黑名单时,IP 过滤器将检查每个请求的 IP。可能存在您不希望过滤器应用的单个路由,并且可以使用 anyip 路由修饰符,使用 路由修饰符语法

在您的 conf/routes 文件中

+ anyip
GET     /path1         controllers.HomeController.myAction

这将从 IP 过滤器中排除 GET /path1 路由,始终允许访问该路由,无论 IP 是否在白名单或黑名单中。

IP 过滤器可用的完整配置选项范围可以在 Play 过滤器 reference.conf 中找到。正如您在该参考配置中所看到的,您还可以通过仅定义路由修饰符黑名单来反转路由修饰符行为,这意味着默认情况下所有路由都是允许的,并且只有特定路由可以通过引入例如 checkip 黑名单路由修饰符来进行检查。

下一步:使用模块扩展 Play


发现文档中的错误?此页面的源代码可以在 这里 找到。阅读完 文档指南 后,请随时贡献拉取请求。有疑问或建议要分享?前往 我们的社区论坛 与社区进行交流。