Grails安全过滤所有操作但除了一个

时间:2014-12-24 05:08:03

标签: security grails groovy grails-filters

我要为我的项目创建一个安全过滤器。我检查if !session.user then redirect to action error。 这是我目前的代码:

all(controller: 'accounting|installation|installer|sales|service|serviceOrder|document', action: '*') {
            before = {
                if (!session.user) {
                    redirect(controller: 'installation', action: 'errors')
                    return false
                }
            }
            after = { Map model ->

            }
            afterView = { Exception e ->

            }
        }

但重点是在session.usercontroller 'installation'中创建了action 'index'。那么如何在没有index action的情况下进行过滤? 任何建议将不胜感激。感谢。

3 个答案:

答案 0 :(得分:3)

您可以使用invert:true e.g

def filters = {
    allExceptIndex(controller:"installation",action:"index",invert:true) {
        before = {
        }
        after = { Map model ->
        }
        afterView = { Exception e ->
        }
    }
}

有关详细信息,请参阅Blog

答案 1 :(得分:1)

试试这个

all(controller: 'accounting|installation|installer|sales|service|serviceOrder|document', action: '*') {
        before = {
         if (!(controllerName == 'installation' && actionName == 'index')) {
            if (!session.user) {
                redirect(controller: 'installation', action: 'errors')
                return false
            }
          }
        }
        after = { Map model ->

        }
        afterView = { Exception e ->

        }
    }

答案 2 :(得分:0)

希望我已经理解了你的问题,因为你想排除动作索引,试试这个..

all(controller: 'accounting|installation|installer|sales|service|serviceOrder|document', action: '*',actionExclude:'index'){....

此致