regex - Grails过滤器正则表达式

标签 regex grails grails-2.4 grails-filters

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

(我正在使用grails 2.4.3和jdk_1.6)

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

我尝试了这个

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

而且我还试图逆转regex参数,但是我没有运气!我搜索了所有的google,但找不到一个线程来告诉我过滤器正则表达式的工作方式!

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

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

最佳答案

首先,仔细看看documentation。请注意,uriuriExclude是 Ant 路径,而不是正则表达式。请记住,如果您查看ant paths函数的功能,您将看到它们不具有逻辑or的功能。

因此,考虑到所有这些,可以回到使用regex启用,而改为使用find属性。

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

注意,我曾经使用invert将此过滤器应用于与find内部的任何模式都不匹配的任何内容。另外,我在脑海中写下了这个代码,因此您可能必须检查应用程序中的正则表达式(我确实使用groovy Web控制台对其进行了检查,以确保我没有真正弄乱语法)。

希望这可以帮助。

关于regex - Grails过滤器正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26794686/

相关文章:

java - ^[A-Z](([A-Z_0-9])*[^_])?$ 错误匹配

php - preg_replace() 函数问题?

grails - 将页面映射从 Controller 方法更改为显式 View 页面后,不呈现消息

grails - Grails 2.4.4-如何在 war 阶段存储配置变量并在Tomcat环境中获取它?

regex - 从图像路径中提取 id

grails - 无法在Grails 3中导入grails.plugin.springsecurity.annotation?

grails - 如何使 Grails 应用程序设计者变得友好,而无需在 View 更改后重新部署?

maven - 无法找出Maven问题

Grails - 编译时 fork 的 Grails VM 退出并出现错误

java - 哪个正则表达式可以找到不包含子字符串的字符串?