我试图在我的Web应用程序中隐藏(或交换通用字符串)URL的敏感部分。
我希望能够在两个字符串foo
和bar
之间进行转换,其中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
。