Grails 2.3.8 仅在生产环境中禁用操作

Grails 2.3.8 disable an action in production environment only

我有一个应用程序,我想在其中创建一个仅在开发和测试环境中可用但在生产环境中不可用的操作。目前我正在使用动作中的环境:

    def superSecretAction(){
    Environment.executeForCurrentEnvironment {
        development{
           // Do something super secret and exciting
        }
        test{
           // Do the same super secret and exciting thing.  
        }
        production{
            render ""
        }
    }

}

虽然这个选项有效,但我真的很想简单地否认甚至能够调用这个方法。我正在使用 Spring Security,并且有一个 interceptUrlMap,我可以想象为生产创建一个单独的地图作为另一种选择,但我希望有一种方法可以完全使生产中的操作无效一起。

正如我在标题中提到的,我是 运行 2.3.8 .

您有多种选择。您可以有一个过滤器来检查环境并根据需要做出响应。您也可以只使用类似这样的条件有条件地添加映射操作:

import grails.util.Environment

class UrlMappings {

    static mappings = {
        if(Environment.current != Environment.PRODUCTION) {
           // put your mapping here...
        }

        // ...

        "/"(view:"/index")
        "500"(view:'/error')
    }
}