使用过滤器隐藏/更改URL的一部分

时间:2019-02-08 16:10:24

标签: scala playframework

我试图在我的Web应用程序中隐藏(或交换通用字符串)URL的敏感部分。

我希望能够在两个字符串foobar之间进行转换,其中foo是url中的原始值,而bar是应该可见的字符串给用户。但是我的MVC应用仍然应该有效地获得foo

据我了解,使用Plays过滤器应该可以实现。但是我真的很努力地解决这个问题。

到目前为止,我尝试过的是:

class Anonymizer @Inject()(implicit val mat: Materializer, ec: 
ExecutionContext) extends Filter {
 def apply(nextFilter: RequestHeader => Future[Result])
       (requestHeader: RequestHeader): Future[Result] = {
nextFilter(requestHeader).map { result =>
  if (requestHeader.uri.matches(".*foo")) {
    val anon: String = requestHeader.uri.replace("foo", "bar")
    result.withHeaders("Location" -> anon)
  }
  else result
  }
  }
}

这可以在浏览器中将foo更改为bar,但是应用程序失败了,因为它现在获得了bar。我现在停留在转换回foo的应用程序逻辑上,但URL中仍然有bar

0 个答案:

没有答案