【问题标题】:Grails Filter regexsGrails 过滤正则表达式
【发布时间】:2014-11-07 05:28:32
【问题描述】:

我是 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 参数进行检查!但一定有更好的方法!

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

【问题讨论】:

    标签: regex grails grails-2.4 grails-filters


    【解决方案1】:

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

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

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

    请注意,我使用 invert 来将此过滤器应用于与 find 中的任何模式都不匹配的任何内容。此外,我在脑海中写下了这个,所以您可能需要检查应用程序中的正则表达式(我确实使用 groovy Web 控制台检查了它,以确保我没有真正弄乱语法)。

    希望这会有所帮助。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    • 2016-01-19
    • 2011-05-03
    • 2011-11-10
    相关资源
    最近更新 更多