1

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

(我使用 grails 2.4.3 和 jdk_1.6)

我想创建一个过滤器以允许访问AppName/AppName/user/login但我做错了!我想使用正则表达式,但我没有做对!

我试过这个

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

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

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

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

4

1 回答 1

1

首先,仔细查看文档。请注意,urianduriExclude是蚂蚁路径,而不是正则表达式。牢记这一点,如果您查看ant 路径的功能,您会发现它们不具备逻辑ors 的能力。

因此,考虑到所有这些,它又回到了使用启用regex和使用find属性。

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

请注意,我使用 invert 将此过滤器应用于与find. 另外,我在脑海中写下了这个,所以你可能需要检查应用程序中的正则表达式(我确实使用 groovy web 控制台检查了它,以确保我没有真正搞乱语法)。

希望这可以帮助。

于 2014-11-07T10:04:27.943 回答