【问题标题】:Scalatra: Migrating Jersey Filters to ScalatraScalatra:将 Jersey 过滤器迁移到 Scalatra
【发布时间】:2014-12-30 05:15:38
【问题描述】:

我开始深入研究 Scalatra,但我在泽西岛拥有丰富的经验。我正在努力解决的一件事是如何在 Scalatra 中为控制器获取多个过滤器?例如,我有三个独特的过滤器:

  1. CSRF
  2. XSS
  3. 身份验证

我的一些控制器只需要 2 和 3,都需要 1,而其他的只需要 3。将来我可能会有更多的过滤器。我了解before()after() 方法,但这些方法似乎对我习惯使用泽西岛的链接没有帮助。有人可以帮助阐明我应该寻找什么吗?

【问题讨论】:

  • 您的路线是否符合要求?例如,是否所有只需要过滤器 3 的都遵循类似的路由模式(如 /foo/bar/* 或类似的)?
  • 是也不是,但您在下面的回答实际上效果更好。我一直讨厌必须查看 web.xml 文件来确定哪个过滤器应用于哪个控制器,我更喜欢 before() 过滤器以提高可读性。

标签: scala jersey scalatra


【解决方案1】:

如果你有明确定义的路线,根据你想要做的事情共享一个共同的模式,那么你可以做

def before("/pattern1/*") {
    CSRF
}

def before("/pattern2/*") {
    XSS
    CSRF
}

def before("/pattern*") {
    Authenticate
}

等等。

【讨论】:

  • 啊,我没有意识到你可以有多个 before() 和 after() 模式,这实际上有很大帮助。考虑到您可以为相同的 HTTP 类型提供其他路由,我很愚蠢地错过了这一点……谢谢,这很有帮助!
  • 没问题。这对我有帮助,并与罗斯贝克 (github.com/rossabaker) 确认:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多