Grails Filter正则表达式



我是grails的新手,到目前为止我只能使用简单的过滤器。我想以一种有效的方式使用过滤器。

(我使用的是grails 2.4.3和jdk_1.6)

我想创建一个过滤器来允许访问AppName/AppName/user/login,但我做不到!我想使用regex,但我没有做到!

我试过这个

       loggedInOnly(uri:'/**',uriExclude :"*.css|*.js|*image*|/|/user/login"){
            before = {
                println "### ###### #### #"
            }
        }

我也尝试过反转regex参数,但我没有成功!我搜索了所有的谷歌,但我找不到一个线程来告诉我过滤器正则表达式是如何工作的!

我知道我可以创建xxxx(controller:'*', action:'*')过滤器,然后使用controllerNameactionName参数进行检查!但一定有更好的方法!

简而言之,我的问题是:正则表达式如何在过滤器中工作?

首先,仔细查看文档。请注意,uriuriExclude是蚂蚁路径,而不是正则表达式。记住这一点,如果你观察蚂蚁路径的功能,你会发现它们不能进行逻辑or

因此,考虑到所有这些,现在回到使用启用regex并使用find属性。

loggedInOnly(regex: true, find: '(.​*.css|.*.js|.*image.*|\/|\/user\/login)​', invert: true){
  before = {
    ...
  }
}

请注意,我已经使用inverse将这个过滤器应用于与find内的任何模式都不匹配的任何内容。此外,我还记下了这一点,所以您可能需要抽查应用程序中的正则表达式(我确实使用groovy web控制台进行了检查,以确保我没有真正弄乱语法)。

希望这能有所帮助。

最新更新