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