5

我有一个过滤器,我想过滤除一个让我进入登录页面的操作之外的所有操作。
如果我用某种条件过滤所有页面,那么即使是登录页面也会被过滤,因此它卡在无限循环中,因为条件不满足(用户未登录)。 session.getAttribute("CurrentEmployeeIds")它告诉用户是否登录


我的过滤器在这里:

class LoginFilters {

    def filters = {
        all(controller:'dashboard', action:'*') {
            before = {
                if (session.getAttribute("CurrentEmployeeIds")==null) {
                    redirect(controller:"site",action:"index")
                    return false
                }
            }
            after = { Map model ->

            }
            afterView = { Exception e ->

            }
        }
    }
}

我想以不过滤controller:"site",action:"index"此网址并过滤其他所有内容的方式进行过滤。
提前致谢。

4

1 回答 1

12

您可以反转过滤规则,例如:

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

请参阅文档http://grails.org/doc/latest/guide/theWebLayer.html#filters

于 2013-09-25T13:26:56.760 回答