在Play Framework(Scala)中限制对特定IP的访问
发布时间:2020-12-16 10:04:56 所属栏目:安全 来源:网络整理
导读:如何使用 Scala限制在Play Framework中访问IP列表? 我正在使用Play Framework 2.2.4 我找到了Java的解决方案: ?http://feadro.com/simple-ip-access-list-for-play-2-1-with-java/ 我应该如何在Scala中执行此操作? 解决方法 在application.conf中粘贴您要
如何使用
Scala限制在Play Framework中访问IP列表?
我正在使用Play Framework 2.2.4 我找到了Java的解决方案: 我应该如何在Scala中执行此操作? 解决方法
在application.conf中粘贴您要限制的IP.
myapp.ipwhitelist = ["192.168.1.1",...] 然后创建一个适用于每个传入请求的global filter,例如: import scala.collection.JavaConverters._ import play.api.libs.concurrent.Execution.Implicits._ import play.api.libs.iteratee.Iteratee import play.api.Play.current import play.api.mvc._ object IPFilter extends EssentialFilter { def apply(nextFilter: EssentialAction) = new EssentialAction { def apply(requestHeader: RequestHeader) = { // read the IPs as a Scala Seq (converting from the Java list) val ips: Seq[String] = current.configuration.getStringList("myapp.ipwhitelist") .map(_.asScala).getOrElse(Seq.empty) // Check we've got an allowed IP,otherwise ignore the // request body and immediately return a forbidden. if (ips.contains(requestHeader.remoteAddress)) nextFilter(requestHeader) else Iteratee.ignore[Array[Byte]] .map(_ => Results.Forbidden(s"Bad IP! ${requestHeader.remoteAddress}")) } } } 然后在您的应用程序Global对象中启用它: object Global extends WithFilters(IPFilter) with GlobalSettings 如果您想要更灵活,可以使用相同的逻辑,但使用Action composition而不是全局过滤器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |